我创建了一个包装一些C功能的Python模块。我潜在的用户正在使用MS Windows,并且我正在使用distutils将c功能构建到.pyd文件中。
我创建了一个清单文件,该清单文件在Python软件包中包含.pyd文件,所有内容(包括.pyd文件)都被检入版本控制。然后,用户可以从版本控制中签出它并安装模块。
该模块的大多数用户将无法从源代码重建.pyd文件,因为他们没有安装Visual Studio,而且他们不一定有权访问链接源代码所需的库。因此,我希望他们能够使用包装中包含的.pyd文件。
问题是用户执行python setup.py install
时,有时会尝试重建.pyd文件,具体取决于.pyd文件和源文件的相对时间戳。我无法控制稍后的时间戳,我认为这取决于从版本控制中获取文件的顺序。
处理这种情况的正确方法是什么?
答案 0 :(得分: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
文件,以根据运行时平台进行下载和安装。车轮的文件名中包含兼容性标签。
如果您希望支持多个平台,则可能需要构建为不同平台标记的单独轮子。