2016-05-15 8 views
2

Hallo Meine Python-Installation ist in einem anderen Verzeichnis und ich verwende ein Docker-Image, das Mac-basiert ist und Shebang-Zeile als/bezeichnet Benutzer/local/bin/python3 aus einem anderen Ordner im Shell-Skript./usr/local/bin/python3: schlechter Interpreter: Keine solche Datei oder Verzeichnis für Ubuntu 14.04

mein Python-Installationspfad

Python 3.4.3 (default, Oct 14 2015, 20:28:29) 
[GCC 4.8.4] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sys 
>>> sys.path 
['', '/home/myuser/project', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages'] 
>>> 

so ist es eine Möglichkeit, die Shebang-Zeile ohne Änderung i auf meine Installation von python3 umleiten oder Link kann aus diesem Fehler zu erhalten.

wird empfohlen, python3 im angegebenen Pfad zu installieren. ?

bitte beraten.

Antwort

1

Wenn Sie den Shebang der Datei nicht ändern können und Zugriff auf die Dockerfile haben, die Ihr Docker-Image erstellt, können Sie eine Befehlsanweisung hinzufügen, um einen symbolischen Link zu erstellen: ln -s /usr/bin/python3 /usr/local/bin/. Wenn Sie keinen Zugriff auf die Dockerfile haben. Dann können Sie den obigen Befehl innerhalb der laufenden Docker-Instanz ausführen. Das sollte Ihr Problem lösen, ohne die Datei ändern zu müssen.

https://docs.docker.com/engine/reference/builder/#cmd

+0

CMD ["ln -s", "/ usr/bin/python3", "/ usr/local/bin /"] sollte funktionieren? Ich meine, muss ich CMD ["ln -s", "/ usr/bin/python3", "/ usr/local/bin/pyhon3"] sagen. Ich bin neu in Linux-System –

+0

Beide Möglichkeiten sollten ohne Problem funktionieren. Angenommen, python3 befindet sich in '/ usr/bin /', wenn Sie nicht wissen, ob es sich dort befindet, können Sie stattdessen Folgendes tun: 'RUN/bin/bash -c 'ln -s $ (welches python3)/usr/local/bin/''. Ich bin mir nicht sicher, ob dieses Formular mit "CMD" funktionieren würde. – xmonk

+0

Eine andere Möglichkeit ist: 'RUN' statt' CMD'. Gerade jetzt kann ich mich erinnern, wo ich gelesen habe, dass CMD bevorzugt wurde. Aber entweder 'CMD' oder 'RUN' sollte gut funktionieren. – xmonk

0

Sie könnten wie gewohnt Shebang auf "/ usr/bin/env python" setzen und dann Ihren Pfad entsprechend einstellen, so dass die richtige Version von Python auf dem Pfad für Ihre ausführbare Datei liegt. In bash können Sie den Pfad auf der Kommandozeile gesetzt werden:

PATH=python/path:$PATH app 

Ich werde manchmal die shebang ignorieren und python/path/python $(which app), um Art, die Python-Interpreter zur Steuerung ausgeführt wird.

+0

Ja, das ist wahr, aber in meinem Fall ich ein Docker Bild verwenden. Und aus irgendeinem Grund kann ich das nicht ändern oder möchte nicht mein Docker-Bild ändern, also gibt es für meinen Dev-Environment-Zweck irgendeine Art und Weise, Shebang so zu halten, wie es ist, kann ich es zum Funktionieren bringen? –

Verwandte Themen