“错误:选项-无法识别单一版本-外部版本管理”表示什么?


102

error: option --single-version-externally-managed not recognized在加入pip installvarions软件包(包括PyObjCastropy)时似乎突然开始遇到错误。我以前从未见过此错误,但现在它也出现在travis-ci构建中,但没有任何更改。

此错误是否表示已过期?还是某些错误指定的选项setup.py?还是完全其他?

Answers:


84

新更新:

安装最新版本的setuptools。如果仍然出现错误,请wheel同时安装。

pip install -U setuptools
pip install -U wheel

原始答案/更多详细信息:

--single-version-externally-managed 是用于Python软件包的选项,指示setuptools模块创建一个Python软件包,如果需要,可以由主机的软件包管理器轻松地管理它,例如Yum或Apt。

如果您看到此消息,则可能是旧版本的setuptools或Python。尝试使用Distribute,它是setuptools的较新版本,并且向后兼容。这些软件包可能希望您已经拥有它。

https://pypi.python.org/pypi/distribute

编辑:至此,分发已经合并到主setuptools项目中。只需安装最新版本的setuptools。正如@wynemo指出的那样,您可能希望使用该--egg选项,因为它更适合那些不希望创建要分发的系统软件包的手动安装人员。


1
您可以添加显示哪个版本吗?我使用的是setuptools 0.6,pip不知道较新的版本。distribute听起来
不错

你不import distribute。Distribute是一种替代产品,具有相同的模块名称。import setuptools也需要它。
Kelketek

然后,要做的就是确保setuptools没有覆盖发行版(如果两者都安装了)。您应该使用pip安装分发,然后删除setuptools。我认为应该可以。
Kelketek

17
应该添加:不要再使用分发了。Distribute已被合并回到setuptools项目中,因此现在只有一个setuptools规则可以将它们全部统治。
Iguananaut

1
@johntex,这个答案是一年多以前做出的,当时还没有合并发行版和setuptools(或者如果它们合并了,我就不会听说)。我已经更新了。
Kelketek 2014年

136

添加--egg选项

pip install --egg SCons

我使用pip1.4.1版


10
那是唯一真正有用的解决方案。最近的pip和setuptools已经安装,但是我讨厌这个错误。
迈克尔

我在pyenv上遇到了这个问题,并解决了这个问题。
glaucon

13
有人可以详细解释此选项的含义以及为什么有效吗?
kawing-chiu

4
虽然这对我有用,但我也收到错误消息:“不推荐使用:--egg已被弃用,以后将被删除。此标志与pip的大部分互斥,并且实际上使用它会使pip管理安装过程。”
natersoz

2
no such option: --egg在pip 18.1
gdw2

45

安装wheel最近解决了这个问题pip(我使用的是8.1.2):

pip install wheel

如果愿意,您可以还原编辑,没问题。如果您知道的确切版本pip以及wheel其固定位置,则可能值得一提,以防它再次被破坏。而且,答案也无法解释到底发生了什么。
anatoly techtonik

@sparrowt的这个加号解决了我的问题
David Poxon

7

尝试像这样升级setuptools:

pip install --upgrade setuptools


5

我有这个问题。原来,我的pip缓存中的文件权限存在问题。

如果您在pip输出的开头看到一条消息,例如

The directory '/home/ubuntu/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/ubuntu/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.

您可能有同样的问题。您可以通过确保对pip缓存具有适当的文件权限(例如chown -R $(whoami) /home/ubuntu/.cache/pip)来解决它,或者,如果您使用的是UNIX,则可以使用XDG_CACHE_HOMEenv var 将pip缓存位置设置为您拥有的某个文件夹。


令人惊讶的是,它也对我有用(如果您用于sudo安装软件包,请确保添加-H标志)!我真的看不到缓存和命令选项错误之间的连接,但是没关系。
德尔甘

1

我尝试了上述解决方案。但是,只有执行以下操作,我才能解决该问题:

sudo pip3 install -U pip (对于python3)


0

当我尝试升级一个python软件包时,我的macbook上也出现此问题。我在OS X中检查了pip版本,它太旧了:1.1。我使用Follow cmd将pip升级到1.5.6

easy_install -U pip

然后,此错误将得到解决。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.