【发布时间】:2018-07-11 01:23:12
【问题描述】:
有没有办法使用setup.py 将python 包安装为wheel/pip 样式的包(即dist-info),而不是setup.py 默认执行的egg 安装(即egg-info) ?
例如,如果我有一个带有setup.py 脚本的python 包,并且我运行以下命令,它将将该包安装为一个鸡蛋。
> python setup.py install
但是,我可以先构建一个轮子,然后使用 pip 将该轮子安装为轮子/dist-info 类型的安装
> python setup.py bdist_wheel
> pip install ./dist/package-0.1-py2-none-any.whl
有没有办法直接从setup.py 将软件包安装为 wheel/dist-info 安装?或者是否需要同时使用setuptools 和pip 的两步过程?
【问题讨论】:
-
pip install dir/其中dir包含setup.py? -
@hoefling
pip将从包含setup.py的目录安装,但它只是调用setup.py install,因此它会生成相同的 egg 安装。 -
这不是真的。试一试,你会发现当从目录安装时,
pip会运行bdist_wheel命令,然后从构建的 wheel 文件中安装包。至少这是我在当前pip 9.0.1中观察到的行为。 -
@hoefling 是的,我试过了。
pip绝对会创建一个鸡蛋并安装它。我不相信pip会安装 from 一个 egg 二进制分发文件,因为 egg 格式不包含足够的元数据来了解该特定 bdist 是否适用于该特定 python 安装。这是创建车轮格式的部分原因。 -
@hoefling 嗯...我也有一个
pip 9.0.1,它对我来说表现不同。如果这很重要,我在窗户上。
标签: python pip setuptools python-wheel python-packaging