Pythonpath仍然被忽略,无法使用pip在本地安装

时间:2012-08-10 03:52:14

标签: python numpy pip setuptools distutils

我发现我的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设置正确,但系统范围内的目录仍在推翻它。

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

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

pip

在拒绝许可的情况下仍然失败:

runner.py

看起来runner.py install --user numpy --upgrade 已被破坏。我也不确定这会如何解决系统范围的python在OSError: [Errno 13] Permission denied: '/usr/bin/f2py2.6' 中使用系统范围的包这一事实...是否有解决方案?现在看起来几乎不可能在python中安装本地软件包。

1 个答案:

答案 0 :(得分:2)

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

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

(您可能需要将“lib64”更改为“lib32”或仅更改“lib”)

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

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

作为列表手段,您可以操纵sys.path。您可以在系统site-packages之前将目录插入sys.path,然后导入numpy。

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

像这样安装:

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