我在Python 2.7.6 32位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和所有相关工具都是最新的稳定版本。
答案 0 :(得分:0)
事实证明,这个问题是由Jenkins使用一个非常古老的SVN标准(1.4)引起的,因为它自己的存储库。切换到1.7会纠正此行为。