【发布时间】:2020-02-19 14:44:36
【问题描述】:
importlib.resources 标准库模块的 Python importlib_resources 反向端口在 setup.cfg 文件中有以下部分:
[options]
python_requires = >=2.7,!=3.0,!=3.1,!=3.2,!=3.3
setup_requires =
setuptools
wheel
install_requires =
pathlib2; python_version < '3'
typing; python_version < '3.5'
packages = find:
为什么setup_requires 包含setuptools?这似乎没有意义,因为:
-
setup.py 文件的第一行导入
setuptools,所以当调用setup函数并读取指示安装setuptools的setup.cfg 文件时,安装@ 已经太迟了987654332@:from setuptools import setup setup() -
setuptools已经安装在任何全新的 Python 安装中(好吧,仅在 Windows 10 和 MacOS 10.15 上使用 Python 3.8.0 进行了测试):$ python -V Python 3.8.0 $ pip list Package Version ---------- ------- pip 19.2.3 setuptools 41.2.0 WARNING: You are using pip version 19.2.3, however version 19.3.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.
【问题讨论】:
-
Python 也包含在每个全新的 Python 安装中,但它就在那里......
-
@MadPhysicist
python_requires有不同的语义:它不是为了安装 Python,而是为了防止pip为错误的 Python 版本安装发行版(参见 packaging.python.org/guides/…)。跨度> -
这根本没有任何意义。
setup_requires和install_requires都不是标准关键字,不会被distutils识别;它们仅对setuptools有意义。一个简单的测试:python -c "from distutils.core import setup; setup(install_requires=['foo'])" --version会吐出UserWarning: Unknown distribution option: 'install_requires'。这意味着如果setuptools没有安装,setup_requires不会有任何作用;因此在依赖项中列出它是没有用的。 -
setuptools默认情况下未安装在 Python 上。它可能安装在某些发行版中,例如您在 Windows 上找到的,但在一般情况下,它不是,并且打包社区正在努力使 setuptools 完全可选。
标签: python setuptools python-wheel