【问题标题】:Pip and Python disagree on module locationPip 和 Python 在模块位置上存在分歧
【发布时间】:2023-03-30 08:34:01
【问题描述】:

好的,这很奇怪。我正在帮助 Mac (Yosemite) 上的同事,在 /usr/bin/python (2.7.10) 中运行随附的 Python 可执行文件。我用发货的easy_install安装了pip(9.0.1),存放在/usr/local/bin,shebang line为#!/usr/bin/python。然后我使用pip 安装了一些模块,包括six,却发现pip 和python 不知何故不同意该模块的版本:

pip install -vvv -U six的尾巴:

Installed version (1.10.0) is most up-to-date (past versions: 0.9.0, 0.9.1, 0.9.2, 1.0.0, 1.1.0, 1.2.0, 1.3.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.6.1, 1.7.0, 1.7.1, 1.7.2, 1.7.3, 1.8.0, 1.9.0, 1.10.0)
Requirement already up-to-date: six in /Library/Python/2.7/site-packages

python -c 'import six; print six.__version__'的输出:

1.4.1

相关地点:

$ type pip
pip is /usr/local/bin/pip
$ type python
python is /usr/bin/python
$ head -n 1 $(type -p pip)
#!/usr/bin/python

$PYTHONPATH 未在环境中设置。但他们仍在寻找不同的地方。从pip 输出中可以看出,它正在/Library/Python/2.7/site-packages/ 中查找/存储。但是如果我循环遍历sys.path,我找到six 的第一个位置是/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/

那么断开连接在哪里?

【问题讨论】:

  • 你同事的 Mac 在 El Capitan 上吗?可能与this 有关
  • 他在经营优胜美地,但看起来情况类似
  • This 可能会有所帮助
  • 你能运行这个吗? python -c 'import six; print six.__file__'
  • 正如我在问题中所说,import/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/ 中找到six

标签: python macos python-2.7


【解决方案1】:

问题原来是加载路径的顺序。在我的 Sierra 机器上(我验证我能够为默认的 /usr/bin/python 安装新的 six),/Library/Python/2.7/site-packages 出现在sys.path 中的/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python 之前。但是在同事的机器上,/Library/Python/2.7/site-packages 是最后一个条目,位于Extras 文件夹之后,因此安装了pip 的版本会被系统安装屏蔽。

我怀疑这是由 Sierra 修复的 Yosemite Python 安装的问题,但无论如何我都看不到简单的修复。所以选项是安装一个单独的 Python 实例(我的偏好;无论如何我通常使用 pyenv)或手动设置 PYTHONPATH 以将 site-packages 放在前面。或者升级到更新的 macOS,我想。

感谢大家帮助解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-14
    • 2018-11-25
    • 2013-02-09
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多