使用setuptools/distribute时,我无法让安装程序拉入任何^{
setup(
name='myapp',
packages=find_packages(),
package_data={
'myapp': ['data/*.txt'],
},
include_package_data=True,
zip_safe=False,
install_requires=['distribute'],
)
其中myapp/data/
是数据文件的位置。
我意识到这是一个老问题,但是对于通过Google找到自己的路的人来说:
package_data
是一个低谷,dirty lie。它只在构建二进制包时使用(python setup.py bdist ...
),而在构建源包时不使用(python setup.py sdist ...
)。当然,这是荒谬的——人们会期望构建一个源发行版会产生一个文件集合,这些文件可以发送给其他人来构建二进制发行版。在任何情况下,对于二进制分布和源分布,使用^{} 都可以工作。
我也有同样的问题。解决方法,就是简单地删除
include_package_data=True
。在reading here之后,我意识到
include_package_data
的目标是包含版本控制中的文件,而不是仅仅“包含包数据”(顾名思义)。从文档中:去掉这个参数就解决了这个问题,这也是为什么当你切换到distutils时它也能工作的原因,因为它不接受这个参数。
按照@Joe的建议删除
include_package_data=True
行也对我有效。更详细地说,我有no
MANIFEST.in
文件。我用的是Git而不是CVS。存储库的形状如下:
setup.py
:我为源发行版运行
python setup.py sdist
(没有尝试二进制)。在一个全新的虚拟环境中,我有一个
myproject-4.19.tar.gz
,文件, 我用除了安装到我的虚拟环境的
site-packages
中的所有内容之外,这些特殊的数据文件还安装到/opt/local/myproject/data
和/opt/local/myproject/etc
。相关问题 更多 >
编程相关推荐