1

我发现我的 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/

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

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

编辑:我尝试遵循建议并使用pip. 我在系统范围内安装了一个pip无法识别的旧--user版本(0.3 版)。我尝试自行升级pippip但当然失败了,因为我无法在本地安装它,所以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 中安装本地包。

4

1 回答 1

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. 您可以将您的目录插入到系统站点包之前的 sys.path 中,然后导入 numpy。

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

像这样安装:

pip install --user --install-option="--install-scripts=$HOME/bin"
于 2012-08-10T13:10:40.657 回答