我的项目结构如下:
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文件都丢失了......
答案 0 :(得分:0)
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()
中的。