2016-08-31 1 views
2

Ich habe ein Problem, wo Pakete über setuptools zu Python Anaconda haben shebangs am falschen Ort neu geschrieben.Conda setsetools installieren Änderungen shebangs auf Standard-Python installieren

Ich habe Python Anaconda und Setuptools-Paket installiert. Ich habe, dass Python ausführbare Punkte an die ausführbare Datei anaconda prüft

[email protected]:/opt/content-analysis$ which python 
/opt/anaconda2/bin/python 

Ich brauche ein eigenes Paket zu meinem anaconda Python zu installieren. Es ist nur über setuptools installierbar. Es enthält eine Befehlszeile ausführbare Datei mit dem folgenden shebang an der Spitze:

#!/usr/bin/env python 

Nachdem das Paket mit dem folgenden Befehl installieren:

sudo python setup.py install --prefix=/opt/anaconda2 

Die ausführbare Datei (content_analysis) erscheint in einem Pfad erreichbar Lage. Aber der Shebang an der Spitze wurde durch den fest codierten Ort der Standard-Python-Installation auf dem Rechner ersetzt.

[email protected]:/opt/content-analysis$ which content_analysis 
/opt/anaconda2/bin/content_analysis 
[email protected]:/opt/content-analysis$ sed -n 1,2p /opt/anaconda2/bin/content_analysis 
#!/usr/local/bin/python 

Ich habe folgende Beitrag here über Setuptools Überschreiben von Bauden lesen. Der Beitrag schlägt vor, dass die Python-ausführbare Datei, die zuerst in der die ausführbare Datei sein soll, die setuptools verwendet, um den Shebang zu ersetzen. Dies scheint jedoch für mich nicht der Fall zu sein.

Hinweis: Ich kann eine ausführbare Python-Datei nicht in meinen -Befehl codieren. Ich brauche eine Bereitstellungslösung, die in jeder Umgebung arbeiten, die Conda als erste Python in der schließlich dachte $PATH

Antwort

2

installiert ich heraus, was meine Probleme alle Python wurde verursacht bekommen und Abhängigkeiten ordnungsgemäß installiert wurde:

Wenn sudo wird vor einer ausführbaren Datei aufgerufen, in Debian wird die $ PATH-Variable automatisch in eine sichere Pfadsuche geändert. Hier ist eine Demonstration:

[email protected]:/opt/content-analysis$ sudo sh 
# echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

gegen

[email protected]:/opt/content-analysis$ sh 
$ echo $PATH 
/opt/anaconda2/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games 

Also, wenn sudo vor sudo python setup.py aufgerufen wird, die Installation wird zurück in die Standard-Python zurückkehrt.

Siehe this post zur Diskussion

Verwandte Themen