我正在 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 和所有相关工具都是最新的稳定版本。