Ich versuche, pip zu verwenden, um ein Paket lokal in ~/.local
zu installieren. Das Problem besteht darin, dass das Paket (in einer älteren Version) bereits global auf dem System verfügbar ist. Obwohl das Verzeichnis der globalen Python-Pakete nicht in meinem PYTHONPATH
ist, weigert sich pip immer noch zu installieren und denkt, dass die Paketanforderung erfüllt ist. Dies ist vergleichbar mit dem Problem hier beschrieben, außer ich nicht mit sudo
so die Lösung nicht gelten: pip - Requirement already satisfied?mit pip, um Pakete lokal trotz erfüllten globalen Anforderungen zu installieren
Wenn ich tun:
pip install --user numpy
Dort heißt es:
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
jedoch /usr/local/lib/...
ist nicht in meinem PYTHONPATH
. Die einzige Sache in PYTHONPATH
ist ~/.local
.
Wenn ich versuche zu tun:
pip install --user --upgrade numpy
Es numpy heruntergeladen und kompiliert, und dann denkt, dass ich eine globale mache installieren trotz der --user Flagge und ich:
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'
Wie kann das behoben werden? Ich bin nicht sicher, warum es versucht, alles zu tun, das globale Erlaubnis erfordert, wenn es das --user
Kennzeichen übergibt.
Gibt es eine Möglichkeit, pip zu sagen, nur ~/.local
zu verwenden und alles andere auf dem System zu ignorieren? (Ich will nicht verwenden virtualenv Es ist hier nicht notwendig, ich will nicht, mehrere Umgebungen, eine nur!).
Warum würden Sie 'virtualenv' nicht verwenden, ist das nicht der genaue Grund, warum es erstellt wurde? – dm03514
Numpy spielt nicht gut mit Pip. Es versucht, 'f2py' in'/usr/bin/'zu installieren. Wahrscheinlich, weil es außerhalb von Pythons 'site-packages' liegt.Höchstwahrscheinlich wird es andere Dateien geben, die außerhalb davon installiert werden müssen, und pip scheint nicht zu wissen, wie man damit umgeht. Nicht sicher, ob virtualenv hier helfen wird. – tiago
@tiago * Numpy spielt nicht gut mit Pip. Es versucht, f2py auf /usr/bin/ zu installieren. Nein, tut es nicht. Es ist pip versucht ** System numpy ** zu deinstallieren, die wegen fehlender Berechtigungen fehlschlägt. Siehe meine Antwort. –