【发布时间】: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