在 Python 包中包含 *.pyd 文件

Luc*_*ira 9 python include pyd pypi python-2.7

我有一个 python 模块module.pyd,一旦它被手动放到 python 安装文件夹的站点包上,它就可以正常工作。

当我将我的解决方案上传到云环境时,问题就开始了,buildpack 要求我将每个模块作为一个包传递给pip install module. 我用一个简单的__init__.py文件创建了一个文件夹,该文件只导入module.pyd 的所有内容,以便我的模块被视为一个文件夹。

然后我在这里阅读了http://peterdowns.com/posts/first-time-with-pypi.html如何上传我自己的模块并且我成功了,但是当我安装我的模块时,module.pyd文件没有被复制。我也尝试通过存储库直接安装它,pip install git+repository但发生了同样的事情。

我在这里阅读了https://docs.python.org/2/distutils/sourcedist.html#specifying-the-files-to-distribute我可能不得不明确地说我想在清单中复制*.pyd文件。在文件中,我已经完成了,但似乎还没有工作。

我目前使用 python 2.7.10

我是 python 新手,所以我很感激你们的帮助

gab*_*ous 8

只需使用MANIFEST.in

recursive-include module *.pyd
Run Code Online (Sandbox Code Playgroud)

这将包括目录中的所有 pyd 文件module

您的包布局应如下所示:

module/
--- __init__.py
--- _module.pyd
--- module.py
MANIFEST.in
README.rst
setup.py
Run Code Online (Sandbox Code Playgroud)

而且不要忘记添加include_package_data=Truesetup()setup.py为了使用强制MANIFEST.in建立车轮和Win32安装时(否则MANIFEST.in将只能用于源码包/ ZIP)。

的最小示例setup()

README_rst = ''
with open('README.rst', mode='r', encoding='utf-8') as fd:
    README_rst = fd.read()

setup(
    name='module',
    version='0.0.1',
    description='Cool short description',
    author='Author',
    author_email='author@mail.com',
    url='repo.com',
    packages=['module'],
    long_description=README_rst,
    include_package_data=True,
    classifiers=[
        # Trove classifiers
        # The full list is here: https://pypi.python.org/pypi?%3Aaction=list_classifiers
        'Development Status :: 3 - Alpha',
    ]
)
Run Code Online (Sandbox Code Playgroud)