0

我正在 Python 2.7.6 32bit Windows 32 上构建一个包

软件包某些组件的唯一确定来源是 svn 'share'。这家公司的常见做法是使用 svn:externals 将其包含到您的项目中。

构建这个包的正常方法是:

python setup.py bdist_wheel

在我的工作站上一切正常(我用 TortoiseSVN 检查了代码),但是当我在 Jenkins 上运行相同的进程时,bdist_wheel 进程不包含任何通过 svn:externals 获取的 .py 文件。

在阅读完文档后,这似乎是因为一个功能可以根据 SVN 跟踪哪些文件来识别哪些脚本是包的一部分。看来,由于 Jenkins 检查文件的方式,bdist_wheel 看到我正在使用 SVN,并假设它知道如何确定跟踪哪些文件,但得到的答案是错误的。

我需要一种方法来阻止 bdist_wheel 命令尝试猜测我关心哪些文件(我实际上希望项目中的每个 .py 文件都包含在内,无论它是如何引入的)

我尝试使用 MANIFEST.in 文件指定我需要的文件,但它不起作用。

recursive-include externals *.py

在这个例子中,'externals' 是我的源代码树中的一个顶级目录,它包含一个init .py 文件和一堆 svn:external'd 目录。在构建的 whl 文件中只能看到 init 文件。

不幸的是,这使得 .py 文件的行为就像它们是数据一样,在日志中我可以看到:

copying build\lib\externals\security\credentials.py -> build\bdist.win32\wheel\foopackage-0.0.4.data\..\externals\security

这显然不是一个真正的解决方案!

Pip、Virtualenv 和所有相关工具都是最新的稳定版本。

4

1 回答 1

0

事实证明,这个问题是由 Jenkins 使用非常旧的 SVN 标准(1.4)作为它自己的存储库引起的。切换到 1.7 可以更正此行为。

于 2014-09-11T13:19:46.787 回答