在Python包中包含*.pyd文件

2024-04-20 11:13:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python modulemodule.pyd当它被手动放到python安装文件夹的site packages中时,运行得非常好。

当我将我的解决方案上传到云环境时,问题就开始了,buildpack请求我将每个模块作为一个包传递给pip install module来安装。我创建了一个文件夹,其中有一个简单的\uu init\uuuu.py文件,它只导入module.pyd的所有内容,这样我的模块就被当作一个文件夹了。

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

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

我目前使用的是Python2.7.10

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


Tags: 模块installpip文件文件夹环境packageshtml
1条回答
网友
1楼 · 发布于 2024-04-20 11:13:38

只需使用MANIFEST.in

recursive-include module *.pyd

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

您的包布局应如下所示:

module/
--- __init__.py
--- _module.pyd
--- module.py
MANIFEST.in
README.rst
setup.py

不要忘记在setup.py中添加include_package_data=True,以便在生成轮子和win32安装程序时强制使用MANIFEST.in(否则MANIFEST.in将仅用于源tarball/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',
    ]
)

相关问题 更多 >