问题描述
我刚刚学会了上传 my own python packages to PyPI 多亏了这个了不起的 tutorial. 我现在正在努力更好地了解 wheels
的工作原理,我发现 this article 很有帮助。
但是,我仍然不明白为什么 python setup.py bdist_wheel
创建一个几乎为空的目录,名为 build
,其中包含两个子文件夹:bdist.win-amd64
(空)和 lib
(其中包含一个副本我的包),以及 .whl
目录中的 dist
文件,开发人员稍后将通过执行 python -m twine upload dist/*
将其上传到 PyPI。
为什么需要这个 build
目录?我的意思是,dist
目录还不够吗?此外,如果代码实际上没有被编译,为什么 .whl
被称为二进制分布。
解决方法
python setup.py bdist_wheel
在内部运行 python setup.py install
,后者依次运行 python setup.py build
将项目编译/构建到 build/
目录中的临时位置,然后将编译的项目安装到另一个临时位置build/
目录内。它从第二个临时位置中的文件创建一个轮子。
至于编译——python 模块可以用 C/C++ 编写,而且通常是这样。所以 python setup.py build
需要编译。如果没有要编译的东西——好吧,编译步骤会被跳过,但构建步骤仍在运行。