我发现我的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中安装本地软件包。
答案 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"