2013-04-28 48 views
5

我试图使用画中画在~/.local本地安装包本地安装包。问题是该软件包(旧版本)已经在系统上全局可用。尽管全球Python包目录在我PYTHONPATH,PIP仍拒绝安装,以为包装的要求得到满足。这类似于这里所描述的问题,但我不使用sudo因此该解决方案并不适用:pip - Requirement already satisfied?使用画中画尽管全球满足要求

如果我做的:

pip install --user numpy 

它说:

Requirement already satisfied (use --upgrade to upgrade): numpy in /usr/local/lib/python2.7/dist-packages/numpy-1.6.2-py2.7-linux-x86_64.egg 

然而, /usr/local/lib/...不在我的PYTHONPATH中。 PYTHONPATH中唯一的是~/.local

如果我尝试这样做:

pip install --user --upgrade numpy 

它下载numpy的和编译它,然后觉得我做一个全球性尽管--user标志的安装,我也得到:

Installing collected packages: numpy 
    Found existing installation: numpy 1.6.2 
    Uninstalling numpy: 
Exception: 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/basecommand.py", line 107, in main 
    status = self.run(options, args) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/commands/install.py", line 261, in run 
    requirement_set.install(install_options, global_options) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 1162, in install 
    requirement.uninstall(auto_confirm=True) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 495, in uninstall 
    paths_to_remove.remove(auto_confirm) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 1492, in remove 
    renames(path, new_path) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/util.py", line 273, in renames 
    shutil.move(old, new) 
    File "/usr/lib/python2.7/shutil.py", line 300, in move 
    os.unlink(src) 
OSError: [Errno 13] Permission denied: '/usr/bin/f2py' 

如何这个问题能解决?我不确定它为什么会在通过--user标志时尝试执行需要全局权限的任何操作。

有没有办法告诉PIP只使用~/.local和不顾一切的系统上的其他人? (我不希望使用的virtualenv这是不必要在这里,我不想多的环境中,只有一个!)

+0

你为什么不使用'virtualenv',这不是创建它的确切原因? – dm03514 2013-04-28 23:32:05

+3

numpy用pip打得不好。它试图在'/ usr/bin /'上安装'f2py'。可能是因为它在python的'site-packages'之外。很有可能会有其他文件必须在其外部安装,并且pip似乎不知道如何处理它。不确定virtualenv是否有帮助。 – tiago 2013-04-29 09:59:40

+0

@tiago * numpy与pip不兼容。它试图在/usr/bin/上安装f2py。否,它不会。这是点子试图**卸载**系统numpy由于缺乏权限而失败。看到我的答案。 – 2013-11-30 17:49:53

回答

2

Citing马库斯·史密斯(PIP的维护者):

如果你认为全球网站是过时的,并希望在 用户现场最新的,然后使用:
pip install --upgrade --user SomePackage

因为(...)包(在旧版本)已经可以在全球范围的系统上你必须使用--upgrade选项按照Marcus的说法。 卸载系统numpy的包可能是PIP的版本使用(1.2.1)中的错误。尝试当前版本有关--user选择,因为许多问题被固定在1.3和1.4

编辑

马库斯·史密斯points具体的问题在他后来的注释版本:

PIP 1.3具有#705,这对于使用--user和--upgrade 一起是至关重要的。