【问题标题】:Pythonpath is still ignored and unable to install locally with pipPythonpath 仍然被忽略,无法使用 pip 在本地安装
【发布时间】:2012-08-07 09:01:36
【问题描述】:

我发现我的 pythonpath 环境变量被忽略了。我在 ubuntu 上使用 python 2.6。我的.bashrc 中有以下内容:

export PTYHONPATH=/my/home/mylibs/lib/python2.6/site-packages/:$PYTHONPATH

然后我安装一个新版本的numpy 使用:

python setup.py install --prefix=/my/home/mylibs/

它会在本地正确安装。但是,当我尝试安装依赖于新版本 numpy 的其他包(也使用 setup.py)时,他们找不到它,因为默认情况下加载的 numpy 是 /usr/llib 中的那个,而不是我的PYTHONPATH。我的PYTHONPATH 设置正确,但系统范围的目录仍然推翻它。

如何解决这个问题?我只想在我做import numpy 时访问我的本地版本numpy。我看到了与 python 2.4 相关的其他帖子,但据我所知,它从未得到解决。另外,我现在想在不安装 pip 或 virtualenv 的情况下执行此操作。似乎应该可以使用传递给setup.py--prefix--home 选项,然后更改PYTHONPATH 但这对我不起作用......首先读取系统范围的lib 目录。

edit:我尝试遵循建议并使用pip。我在系统范围内安装了无法识别 --user(版本 0.3)的旧 pip。我尝试使用pip 本身升级pip,但当然失败了,因为我无法在本地安装它,所以pip install pip --upgrade --user 不是一个选项。我下载了一个新版本的pip 并在本地安装在我的主目录中,但是当我在提示符下键入pip 时,系统范围内的旧版本仍在使用。我查看了pip 包并找到了runner.py,所以我尝试使用它来安装包:

runner.py install --user numpy --upgrade

这仍然失败,权限被拒绝:

OSError: [Errno 13] Permission denied: '/usr/bin/f2py2.6'

看起来--user 坏了。我也不确定这将如何解决系统范围的 python 在/usr/lib 中使用系统范围的包这一事实...有解决方案吗?现在看来,在 python 中安装本地包几乎是不可能的。

【问题讨论】:

  • 运行PYTHONPATH="/path/to/some/where:$PYTHONPATH" python -c 'import sys; print "\n".join(sys.path)'会发生什么你先看到新路径了吗?
  • 将 pip 与 --user 选项一起使用可以解决您的问题。你为什么不想安装它?另外,您是否在系统范围的站点包目录中安装了 numpy?
  • 你为什么不用sudo apt-get install python-numpy
  • @Keith:是的,有一个我无法控制的系统范围的 numpy 安装 - 这就是我想要解决的问题。我希望使用我的本地版本
  • @Keith:我做了pip install numpy,它在我的系统上工作,虽然我没有root(它不识别--user)。它安装成功,但 /usr/ 中的系统范围版本仍在读取...有什么想法吗?

标签: python numpy pip setuptools distutils


【解决方案1】:

好的,Python 将使用它找到的第一个包。 PYTHONPATH 在系统路径之后附加到 sys.path。所以它通常会首先找到系统。但是“官方”的每用户包目录似乎放在了这之前。所以创建你的个人站点包目录:

mkdir -p $HOME/.local/lib64/python2.7/site-packages
mkdir $HOME/bin

(您可能必须将“lib64”更改为“lib32”或只是“lib”)

这个目录放在我系统上的系统之前。但是你应该通过打印出 sys.path 来验证它。

然后将您的软件包安装到那里。但是,最新的pip 版本中的--user 选项应该已经将其放置在那里。

作为列表度假村,您可以操纵sys.path。您可以将您的目录插入到系统站点包之前的 sys.path 中,然后导入 numpy。

您从脚本安装中得到权限错误,试图将其放在系统位置。您可以传递其他选项以在 $HOME/bin 目录中安装脚本。

像这样安装:

pip install --user --install-option="--install-scripts=$HOME/bin"

【讨论】:

  • 我刚刚尝试了pip 1.1--user,但它仍然没有在本地安装东西。如果我这样做:pip install --user pandas,它会以OSError: [Errno 13] Permission denied: '/usr/bin/f2py2.6' 失败。它仍然尝试更改系统范围的目录...
  • 这个目录没有放在最前面……系统路径在前面
  • @user248237 这不可能,因为 site.py 代码明确地将用户站点目录放在系统站点目录之前。除非您的网站管理员正在做一些非常奇怪的事情。
猜你喜欢
  • 2010-11-03
  • 2014-05-10
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
  • 2023-03-13
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
相关资源
最近更新 更多