【问题标题】:pip installing to wrong folder even though `which pip` is correct即使 `which pip` 是正确的 pip 安装到错误的文件夹
【发布时间】:2016-07-16 11:56:12
【问题描述】:

我使用的是 Mac OS X 10.10。我想使用 pip 为我的自制安装版本的 python 安装软件包(位于/usr/local/bin/python,这是指向/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/bin 的别名)。这个版本的站点包似乎在这里:/usr/local/lib/python2.7/site-packages/

which python 返回/usr/local/bin/python

which pip 返回/usr/local/bin/pip

这些对我来说似乎是正确的。

尝试类似pip install pylzma 的方法返回:

Collecting pylzma
Installing collected packages: pylzma
Successfully installed pylzma
You are using pip version 8.0.2, however version 8.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

但是pip list 没有显示要安装的pylzma。看起来 pip 将软件包安装到 /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages(Mac OS X 附带的 python)。

如何让 pip 安装到我自制的 python 中?

我尝试了一些类似问题的建议:

  1. 我试过export PATH=/usr/local/bin/python:${PATH}
  2. 我试过pip install --install-option="--prefix=/usr/local/lib/python2.7" pylzma
  3. 我尝试将 pip 可执行脚本的第一行更改为#!/usr/local/bin/python
  4. 我试过/usr/local/bin/python -m pip install pylzma

但这些都不起作用。我还尝试将 pip 升级到 8.1.1,但这使得 pip 完全中断。人们推荐使用virtualenv,但据我所知,如果没有 pip,我无法安装它。

当我输入python -m pip 时,它会说:

Usage:
/usr/local/opt/python/bin/python2.7 -m pip <command> [options]

这会是个问题吗?

【问题讨论】:

  • “我试过 /usr/local/bin/python -m pip install pylzma。”。但是在此之前您是否删除了/Library/... 中的安装。否则可能会干扰。
  • 还要检查/usr/local/lib/python2.7/site-packages 是否存在,或者是否在/usr/local/opt/python/lib/python2.7/site-packages 中安装了东西。有时,Homebrew 不会创建从 /usr/local/opt/python//usr/local/ 的符号链接。
  • @Evert,我读到不建议删除/Library/...中的Mac OS X python安装。
  • 我可能已经解决了这个问题。我将 .pydistutils.cfg 文件中的 install_dirinstall_dir = /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages 更改为 install_dir = /usr/local/lib/python2.7/site-packages。 Pip 现在安装到正确的文件夹。但是,当我执行import pylzma 时,我仍然会收到 ImportError。这可能是 pylzma 的特定问题...?
  • @Evert, /usr/local/lib/python2.7/site-packages 确实存在。我遇到了持续的问题:当我尝试运行jupyter notebook 时,我得到ImportError: No module named markupsafe,即使/usr/local/lib/python2.7/site-packages/MarkupSafe-0.23.dist-info 存在。也许我需要提出一个新问题。

标签: python macos python-2.7 pip homebrew


【解决方案1】:

我的问题是我的/Users/&lt;username&gt;/.pydistutils.cfg 包含以下内容:

[easy_install]

# set the default location to install packages
install_dir = /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

[install]
install_lib = /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
install_scripts = ~/bin

我把它改成了:

[easy_install]
# set the default location to install packages
install_dir = /usr/local/lib/python2.7/site-packages

[install]
install_lib = /usr/local/lib/python2.7/site-packages
install_scripts = ~/bin

这似乎奏效了。 pip install 现在将软件包安装到所需位置 /usr/local/lib/python2.7/site-packages

但是,我遇到了持续的路径问题。

import pylzma 仍然给我ImportError: No module named pylzma

在终端中运行jupyter notebook 会得到-bash: jupyter: command not found/Users/&lt;username&gt;/bin/jupyter notebook 确实执行了,但我得到了ImportError: No module named markupsafe,尽管/usr/local/lib/python2.7/site-packages/MarkupSafe-0.23.dist-info 存在。

编辑:我最终让 jupyter notebook 工作了。我必须直接从源 tarball 安装几个包,包括 MarkupSafe、functools32 和 jsonschema。也许 Python 没有在正确的文件夹中查找。

【讨论】:

  • 几乎所有的包都安装为成对的目录,例如.../MarkupSafe-0.23-py2.7.egg-info/ 和 .../site-packages/markupsafe/ 。你有吗?如果没有,请在其他地方寻找目录标记安全,例如cd .../site-packages; du | egrep markupsafe.
猜你喜欢
  • 1970-01-01
  • 2019-08-06
  • 2012-09-30
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多