当前位置: 首页 > 知识库问答 >
问题:

尽管满足了全球需求,但仍使用pip在本地安装软件包

夹谷茂
2023-03-14

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

如果我这样做:

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/…不在myPYTHONPATH中。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!这里没有必要,我不想要多个环境,只需要一个。)

共有1个答案

濮丁雷
2023-03-14

引用马库斯·史密斯(pip的维护者):

如果您认为全局站点已经过时,并且想要用户站点中的最新内容,那么请使用:
pip安装-升级-用户某些包

因为(...)包(在旧版本中)已经在系统上全局可用,所以您必须使用-升级选项,如上面Marcus的评论所示。卸载系统Numpy包可能是您使用的pip版本(1.2.1)中的一个错误。尝试当前版本,因为与--user选项相关的许多问题已在版本1.3和1.4中修复

编辑

马库斯·史密斯(Marcus Smith)在随后的评论中指出了具体问题:

PIP1.3有#705,这对于同时使用--用户和--升级至关重要。

 类似资料:
  • 问题内容: 我正在尝试将IBM的CPLEX库与我的Java应用程序集成。现在,我只是试图创建一个IloCplex对象。我添加了Cplex.jar,它可以很好地编译,但是当我运行它时: Cplex在抛出异常之前打印此消息: 我通过这个参数给JVM: 。这是cplex124.dll的位置。我看过的每个教程都给出了相同的步骤,我觉得自己很好地遵循了它们。 我究竟做错了什么?? 问题答案: 我在互连网上发

  • 问题内容: 在我的应用程序中,我想使用: ,这需要 ,这需要 如何安装带有pip的多个版本来处理这种情况? 问题答案: 点不会帮助您。 您可以告诉它安装特定版本,但是它将覆盖另一个版本。另一方面,使用两个virtualenvs将使您在同一台计算机上安装两个版本,但不能同时使用它们。 最好的选择是手动安装这两个版本,方法是将它们以不同的名称放在Python路径中。 但是,如果您的两个库期望它们具有相

  • 问题内容: 我正在尝试使用通过该选项创建的新virtualenv安装MySQL_python适配器的1.2.2版本。PyPi中显示的当前版本是1.2.3。有没有办法安装旧版本?我发现有一篇文章指出应该这样做: 但是,安装后,它仍显示在站点包中。这是此软件包专用的问题,还是我做错了什么? 问题答案: TL; DR: (即) 首先,我发现您要执行的操作有两个问题。由于您已经安装了版本,因此应该卸载当前

  • pip识别全局安装的软件包-( 我用VirtualVWrapper预激活钩子清理蟒蛇, 然后echo$PYTHONPATH返回空字符串,但这没有帮助。 发生了什么?

  • 我有一个python包A,它依赖于另一个名为godot的私有包(托管在bitbucket上,应该通过git ssh协议访问)。在包A的设置中。py,我有以下代码: 我这里有两个问题: > 重新安装hghttps://bitbucket.org/pypa/setuptools#egg=setuptools 我几乎解决了这一点,但我想知道是否有其他方法可用?调用pip安装-rrequirements.