在python setup.py中,如何在不先进行构建的情况下允许用户安装模块的文件?

问题描述 投票:2回答:1

我创建了一个包含一些C功能的Python模块。我的潜在用户正在使用MS Windows,我正在使用distutils将c功能构建到.pyd文件中。

我创建了一个清单文件,其中包含Python包中的.pyd文件,所有内容(包括.pyd文件)都被检入版本控制。然后,用户可以从版本控制中检查它并安装模块。

该模块的大多数用户将无法从源代码重建.pyd文件,因为他们没有安装Visual Studio,并且他们不一定能够访问链接源代码所需的库。所以我希望他们能够使用我在包中包含的.pyd文件。

问题是当用户执行python setup.py install时,它有时会尝试重建.pyd文件,具体取决于.pyd文件和源文件的相对时间戳。我无法控制以后的时间戳,我认为这取决于它们从版本控制中获取文件的顺序。

处理这种情况的正确方法是什么?

python distutils
1个回答
2
投票

处理这种情况的正确方法是构建和分发标记为windows的wheel。除了(或代替)发布源代码分发之外,您还可以这样做。

pip install --upgrade setuptools wheel
python setup.py build bdist_wheel

这将在.whl子目录下生成一个./dist/文件,然后将其上传到索引(或者您可以直接向用户发送分发文件)。

你的用户不会做python setup.py install,他们会做pip install yourmodule和pip将解析正确的二进制发行版,即.whl文件,以便根据运行时平台下载和安装。兼容性标签存在于滚轮的文件名中。

如果您希望支持多个平台,则可能需要为不同平台构建标记的单独轮子。

© www.soinside.com 2019 - 2024. All rights reserved.