【问题标题】:Why does python setup.py bdist_wheel creates a build folder?为什么 python setup.py bdist_wheel 会创建一个构建文件夹?
【发布时间】:2021-04-05 09:24:42
【问题描述】:

感谢这个了不起的tutorial.,我刚刚学会了上传my own python packages to PyPI,我现在正在努力更好地了解wheels 的工作原理,我发现this article 很有帮助。

但是,我仍然不明白为什么python setup.py bdist_wheel 会创建一个名为build 的几乎空目录,其中包含两个子文件夹:bdist.win-amd64(空)和lib(其中包含我的包的副本),此外dist 目录中的 .whl 文件,开发人员稍后将通过执行 python -m twine upload dist/* 将其上传到 PyPI。

为什么需要这个build 目录?我的意思是,dist 目录还不够吗?此外,如果代码没有实际编译,为什么.whl 被称为二进制分发

【问题讨论】:

    标签: setuptools distutils python-packaging python-wheel


    【解决方案1】:

    python setup.py bdist_wheel 在内部运行python setup.py install,后者又运行python setup.py build,它将项目编译/构建到build/ 目录内的临时位置,然后将编译后的项目安装到build/ 目录内的另一个临时位置。它会从第二个临时位置的文件中创建一个轮子。

    至于编译——python 模块可以用 C/C++ 编写,而且通常是这样。所以python setup.py build需要编译。如果没有要编译的东西——好吧,编译步骤被跳过,但构建步骤仍在运行。

    【讨论】:

    • 你能澄清一下构建目录中的两个子文件夹吗?它们在您描述的过程中是如何使用的?
    • 对于Cheetah3 repo(我是当前的维护者):在python setup.py build 目录build/ 之后有3 个子目录:lib.linux-x86_64-2.7/scripts-2.7/ 和 temp.linux-x86_64 -2.7/. After python setup.py bdist_wheel`还有一个额外的子目录bdist.linux-x86_64/
    • 我的意思是,你在构建过程中提到的这些子目录有什么用?
    • 允许在一个总目录中使用不同的 Python 版本进行构建,以分隔构建阶段。
    猜你喜欢
    • 2018-05-09
    • 2020-08-02
    • 2013-02-02
    • 2022-01-02
    • 2015-05-26
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    相关资源
    最近更新 更多