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

在使用 pip install和各种包(包括 PyObjCastropy)时,我似乎突然遇到了错误 error: option --single-version-externally-managed not recognized

我以前从来没有见过这个错误,但是现在它也出现在 Travis-ci 构建中,并且没有任何改变。

此错误是否表示发行版过期?

setup.py中指定错误的选项?

还有别的事吗?

89783 次浏览

最新消息:

安装最新版本的 setuptools。如果您仍然得到错误,安装 wheel以及。

pip install -U setuptools
pip install -U wheel

原答案/更多详情:

--single-version-externally-managed is an option used for Python packages instructing the setuptools module to create a Python package which can be easily managed by the host's package manager if needed, like Yum or Apt.

如果您看到这条消息,您可能有一个旧版本的 setuptools 或 Python。尝试使用分布式,它是 setuptools 的一个新版本,并且向后兼容。这些包可能希望您已经拥有了它。

Https://pypi.python.org/pypi/distribute

编辑: 在这一点上,分发已经合并到主要的 setuptools项目。只要安装最新版本的 setuptools。正如@wynemo 所指出的,您可能希望改用 --egg选项,因为它更适合于那些手动安装的用户,在这些用户中,您不打算为发行版创建系统包。

添加 --egg选项

pip install --egg SCons

我使用的是 pip版本1.4.1

当我尝试升级一个 Python 包时,我的 Macbook 也有这个问题。 我检查了 OS X 中的 pip 版本,它太旧了: 1.1。 我使用 follow cmd 将 pip 升级到1.5

easy_install -U pip

那么这个错误就修复了。

试着像这样升级 setuptools:

pip install --upgrade setuptools

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

pip install wheel

我遇到了这个问题,原来是我的 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_HOME env var 的 pip 缓存位置设置为您确实拥有的某个文件夹。

我尝试了以上的解决方案,但是,我只能解决这个问题,直到我做到:

sudo pip3 install -U pip(对于 python3)