Python setup.py:缺少一些文件

时间:2018-06-15 16:38:35

标签: python pip package python-wheel

我的项目结构如下:

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文件都丢失了......

1 个答案:

答案 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()中的