2016-03-09 5 views
24

Ich arbeite an Mac OS X Yosemite, Version 10.10.3.pip installiert Pakete erfolgreich, aber keine ausführbaren Dateien von der Befehlszeile

Ich installierte python2.7 und pip MacPort, wie in http://johnlaudun.org/20150512-installing-and-setting-pip-with-macports/

getan, was ich erfolgreich Pakete installieren, und sie in meiner Python-Umgebung und Python-Skripte importieren. Es wird jedoch keine ausführbare Datei gefunden, die einem Paket zugeordnet ist, das über die Befehlszeile im Terminal aufgerufen werden kann.

Weiß jemand, was könnte falsch sein? (Details siehe unten)

Zum Beispiel, während ein Paket, wie angewiesen „rosdep“ genannt Installation in http://wiki.ros.org/jade/Installation/Source

ich laufen kann: sudo pip install -U rosdep die in /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

sich ohne Fehler und die entsprechenden Dateien installiert

jedoch Wenn ich versuche zu laufen: sudo rosdep init, gibt es einen Fehler: "sudo: rosdep: command not found"

Dies ist kein paketspezifischer Fehler. Ich bekomme dies für jedes Paket mit pip auf meinem Computer installiert. Ich habe sogar versucht,

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages 

zu meinem $PATH. Aber die ausführbaren Dateien werden nicht in der Befehlszeile gefunden, obwohl die Pakete perfekt innerhalb von Python funktionieren.

+0

jede virtualenv beteiligt? –

+0

nein, kein virtualenv ist beteiligt. –

+0

Wenn Sie sudo, wechseln Sie zum $ PATH des Root-Benutzers, stellen Sie einfach sicher, dass sein Pfad aktualisiert ist, nicht Ihre PATH –

Antwort

11

überprüfen Sie Ihre $ PATH

tox hat eine Modus-Befehlszeile:

audrey:tests jluc$ pip list | grep tox 
tox (2.3.1) 

wo ist es?

audrey:tests jluc$ which tox 
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/tox 

und was ist in meinem $ PATH?

audrey:tests jluc$ echo $PATH 
/opt/chefdk/bin:/opt/chefdk/embedded/bin:/opt/local/bin:..../opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin... 

Beachten Sie die /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin? Das ist, was meine pip-installed Sachen

Nun, um zu sehen, wo die Dinge aus Python sind, versucht dies zu tun (Ersatz rosdep für tox) erlaubt zu finden.

$python 
>>> import tox 
>>> tox.__file__ 

die ausdruckt:

'/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tox/__init__.pyc' 

Nun cd in das Verzeichnis direkt über lib in der oben. Siehst du ein Verzeichnis bin? Siehst du rosdep in diesem Fach? Wenn ja, versuchen Sie den bin zu Ihrem $ PATH hinzuzufügen.

audrey:2.7 jluc$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.7 
audrey:2.7 jluc$ ls -1 

Ausgang:

Headers 
Python 
Resources 
bin 
include 
lib 
man 
share 
+0

Danke JL für die Antwort, aber das ist hauptsächlich mein Problem. Für mein Beispiel app rosdep, wenn ich so wie Sie tat, ist hier die Ausgabe erhalten: Pip-Liste | grep rosdep rosdep (0.11.4) die rosdep (keine Ausgabe), gibt die Befehlszeile nichts zurück –

+1

** die ** nicht zurückgibt 'Rosdep' ist konsistent mit Ihrem Problem. Mein Punkt ist, dass Sie herausfinden müssen, wo der 'rosdep' installiert ist und wie $ PATH aussieht. –

+0

Danke, ich hatte meine Binärdateien auch in /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin installiert. Hinzugefügt, dass die PATH und jetzt funktioniert. Danke, ich hatte Probleme, die Binärdateien zu finden, die keine Ausgabe lieferten. –

17

Auf macOS müssen Sie /Users/<you>/Library/Python/2.7/bin/ zu $ ​​PATH hinzuzufügen.

Fügen Sie diese auf Ihre Bash_profile

export PATH="/Users/<you>/Library/Python/2.7/bin:$PATH" 

Das ist, wo Pip die ausführbaren Dateien installiert.

+4

Der Ort, an dem Pip installiert wird, hängt davon ab, wie Sie Python installiert haben, MacOS hat mehrere Möglichkeiten, Python zu installieren, wie Macports, Homebrew und Systemstandard. Abhängig davon, welche Version von Python verwendet wird, haben Sie unterschiedliche Speicherorte für pip.Eine einfache Möglichkeit herauszufinden, wo pip und python sich befinden, wäre die Verwendung von "which python" im Terminal und dann das Hinzufügen der entsprechenden Position zu $ ​​PATH. –

+0

gerettet mein Tag danke! – LoveMeow

1

Wenn Sie mit --user (z. B. pip3.6 install --user tmuxp), it is possible to get the platform-specific user install directory from Python itself using the site module installieren. Zum Beispiel auf macOS:

$ python2.7 -m site --user-base 
/Users/alexp/Library/Python/2.7 

von /bin auf diese anhängt, haben wir nun den Pfad, in dem Paket ausführbare Dateien installiert werden. Wir können den PATH in der RC-Datei Ihrer Shell basierend auf der Ausgabe dynamisch auffüllen; Ich verwende bash, aber mit etwas Glück das ist tragbar:

# Add Python bin directories to path 
python3.6 -m site &> /dev/null && PATH="$PATH:`python3.6 -m site --user-base`/bin" 
python2.7 -m site &> /dev/null && PATH="$PATH:`python2.7 -m site --user-base`/bin" 

ich die genaue Python-Versionen verwenden, um die Chance der ausführbaren Dateien zu reduzieren, nur „verschwinden“, wenn Python-Upgrades eine kleinere Version, z.B. von 3,5 bis 3,6. Sie verschwinden, weil, wie oben zu sehen ist, der Benutzerinstallationspfad die Python-Version enthalten kann. Während also python3 auf 3,5 oder 3,6 zeigen kann, zeigt python3.6 immer auf 3,6. Dies muss bei der Installation weiterer Pakete, z.B. Verwenden Sie pip3.6 über pip3.

Wenn Sie die Idee der Pakete verschwinden nichts ausmacht, können Sie python2 und python3 verwenden statt:

# Add Python bin directories to path 
# Note: When Python is upgraded, packages may need to be re-installed 
#  or Python versions managed. 
python3 -m site &> /dev/null && PATH="$PATH:`python3 -m site --user-base`/bin" 
python2 -m site &> /dev/null && PATH="$PATH:`python2 -m site --user-base`/bin" 
Verwandte Themen