【问题标题】:using pip to install packages locally in spite of satisfied global requirements尽管满足全局要求,但仍使用 pip 在本地安装软件包
【发布时间】:2013-04-22 13:20:23
【问题描述】:

我正在尝试使用 pip 在~/.local 本地安装一个包。问题是该软件包(在旧版本中)已经在系统上全局可用。即使全局python包目录在我的PYTHONPATHnot,pip仍然拒绝安装,认为满足包要求。这与此处描述的问题类似,除了我没有使用sudo,因此该解决方案不适用:pip - Requirement already satisfied?

如果我这样做:

pip install --user numpy

上面写着:

Requirement already satisfied (use --upgrade to upgrade): numpy in /usr/local/lib/python2.7/dist-packages/numpy-1.6.2-py2.7-linux-x86_64.egg

但是,/usr/local/lib/... 不在我的PYTHONPATH 中。 PYTHONPATH 中唯一的内容是 ~/.local

如果我尝试这样做:

pip install --user --upgrade numpy

它下载 numpy 并编译它,然后认为我正在执行全局安装尽管有 --user 标志,我得到:

Installing collected packages: numpy
  Found existing installation: numpy 1.6.2
    Uninstalling numpy:
Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/basecommand.py", line 107, in main
    status = self.run(options, args)
  File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/commands/install.py", line 261, in run
    requirement_set.install(install_options, global_options)
  File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 1162, in install
    requirement.uninstall(auto_confirm=True)
  File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 495, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 1492, in remove
    renames(path, new_path)
  File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/util.py", line 273, in renames
    shutil.move(old, new)
  File "/usr/lib/python2.7/shutil.py", line 300, in move
    os.unlink(src)
OSError: [Errno 13] Permission denied: '/usr/bin/f2py'

如何解决这个问题?我不确定它为什么在通过--user 标志时尝试做任何需要全局权限的事情。

有没有办法告诉 pip 只使用~/.local 而忽略系统上的所有其他内容? (我不想用virtualenv!这里没必要,我不想要多个环境,只有一个。)

【问题讨论】:

  • 你为什么不使用virtualenv,这不正是它被创建的原因吗?
  • Numpy 不能很好地使用 pip。它试图在/usr/bin/ 上安装f2py。可能是因为它在 python 的site-packages 之外。很可能还有其他文件必须安装在它之外,而 pip 似乎不知道如何处理它。不确定 virtualenv 是否会在这里有所帮助。
  • @tiago Numpy 不能很好地使用 pip。它正在尝试在 /usr/bin/ 上安装 f2py。 不,它没有。它是 pip 尝试 卸载 系统 numpy 由于缺少权限而失败。看我的回答。
  • 我认为我的回答提供了解决方案——请您检查一下吗?

标签: python numpy pip setuptools pythonpath


【解决方案1】:

CitingMarcus Smith(pip 维护者):

如果您认为全球网站已经过时,并且想要最新的 用户站点,然后使用:
pip install --upgrade --user SomePackage

因为 (...) 软件包(在旧版本中)已经在系统上全局可用您必须按照上述 Marcus 的评论使用 --upgrade 选项。 卸载系统 numpy 包可能是您使用的 pip 版本(1.2.1)中的一个错误。尝试当前版本,因为许多与 --user 选项相关的问题已在 1.3 和 1.4 版本中得到修复

编辑

Marcus Smith points 在他后来的评论中提到具体问题:

pip 1.3 有 #705 ,这对于使用 --user 和 --upgrade 至关重要 在一起。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    相关资源
    最近更新 更多