我的项目结构如下所示:
package1/ # a lot of files, submodules here.
package2/ # a lot of files, submodules here.
package3/ # a lot of files, submodules here.
tests/
setup.py
我有一个类似于下面的setup.py
测试:
setup(
name='MyPackage',
packages=find_packages(exclude=['tests']),
package_data={
'package': ['./path/*.xsd'],
},
include_package_data=True,
py_modules=['package1'],
version=__version__,
description='My description',
classifiers=[
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
],
zip_safe=False,
author='Me',
author_email='example@example.com',
url='http://www.example.com/',
keywords=['Keyword1', 'Keyword2'],
scripts=['./script1.py', './script2.py'],
install_requires=[
'isodate',
'pycurl',
],
extras_require={':python_version < "3.0"': ['enum34', 'future']}
)
我将通过以下方式使用它:
python setup.py bdist_wheel -d .
在此之后,我将通过以下方式安装它:
pip install MyPackage-1.1.0.whl
它工作得很好但是..。
在安装到虚拟环境中之后,我发现package2
中缺少一个配置文件。它看起来类似于:
package2/
http/
api/
http.py
api.yaml
...
有趣的是,这个包中的http.py
和其他文件仍然存在,但是api.yaml
在这个包中的某个地方消失了。
所以,问题是:这怎么可能,有人有什么想法吗?
更新:
我发现所有非Python文件都丢失了...
发布于 2018-06-16 05:06:20
package_data={
'package': ['./path/*.xsd'],
},
字典的关键字必须是您的真实包名称。值必须是要包含的模式列表。要包含package2/http/api/api.yaml,请执行以下操作:
package_data={
'package2': ['http/api/*.yaml'],
},
列出所有非python文件和模式。
另一种方法是创建MANIFEST.in (通常用于源代码分发)和add
include_package_data=True,
在setup()
中。
https://stackoverflow.com/questions/50879668
复制相似问题