Ich sehe dies am Anfang der Python-Dateien:
-
Für Python 2-Dateien
#!/usr/bin/env python
-
Für Python 3-Dateien
#!/usr/bin/env python3
Ich habe den Eindruck, dass die Dateien auch ohne diese Zeile funktionieren.
Ich sehe dies am Anfang der Python-Dateien:
Für Python 2-Dateien
#!/usr/bin/env python
Für Python 3-Dateien
#!/usr/bin/env python3
Ich habe den Eindruck, dass die Dateien auch ohne diese Zeile funktionieren.
Wenn Sie Ihr Skript in einer virtuellen Umgebung ausführen, sagen wir venv
und dann die Ausführung which python
bei der Arbeit an venv
wird der Pfad zum Python-Interpreter angezeigt:
~/Envs/venv/bin/python
Beachten Sie, dass die Name der virtuellen Umgebung ist eingebettet im Pfad zum Python-Interpreter. Wenn Sie diesen Pfad in Ihrem Skript fest kodieren, führt dies zu zwei Problemen:
Daher ist zu ergänzen Jonathan Die ideale Lösung ist laut der Antwort von #!/usr/bin/env python
nicht nur für die Portabilität zwischen verschiedenen Betriebssystemen, sondern auch für die Portabilität zwischen virtuellen Umgebungen!
Die Linie #!/bin/bash/python3
o #!/bin/bash/python
gibt an, welcher Python-Compiler verwendet werden soll. Möglicherweise haben Sie mehrere Python-Versionen installiert. Zum Beispiel,
a.py :
#!/bin/bash/python3
print("Hello World")
ist ein Python3-Skript, und
b.py :
#!/bin/bash/python
print "Hello World"
ist ein Python 2.x Skript
Um diese Datei auszuführen ./a.py
o ./b.py
verwendet wird, müssen Sie den Dateien vorher Ausführungsrechte geben, sonst führt die Ausführung zu Permission denied
Fehler.
Zur Erteilung der Vollstreckungserlaubnis,
chmod +x a.py
In Anbetracht der Probleme der Übertragbarkeit zwischen python2
y python3
sollten Sie immer eine der beiden Versionen angeben, es sei denn, Ihr Programm ist mit beiden kompatibel.
Einige Distributionen werden ausgeliefert python
symverknüpft mit python3
seit einer Weile - verlassen Sie sich nicht auf python
unter python2
.
Dies wird unterstrichen durch PEP 394 :
I den Python-Interpreter aufrufen muss, sollte nicht python angeben, sondern sondern entweder python2 oder python3 angeben (oder die spezifischeren python2.x und python3.x Versionen; siehe die Anmerkungen zur Migration ). Diese Unterscheidung sollte in Shebangs, bei Aufrufen aus einem Shell Skript, beim Aufruf über den system()-Aufruf oder beim Aufruf in einem beliebigen anderen Kontext.
Es erlaubt Ihnen, die ausführbare Datei auszuwählen, die Sie verwenden möchten; das ist sehr was sehr praktisch ist, wenn Sie vielleicht mehrere Python-Installationen haben und unterschiedliche Module haben und diese auswählen möchten. z.B.
#!/bin/sh
#
# Choose the python we need. Explanation:
# a) '''\' translates to \ in shell, and starts a python multi-line string
# b) "" strings are treated as string concat by python, shell ignores them
# c) "true" command ignores its arguments
# c) exit before the ending ''' so the shell reads no further
# d) reset set docstrings to ignore the multiline comment code
#
"true" '''\'
PREFERRED_PYTHON=/Library/Frameworks/Python.framework/Versions/2.7/bin/python
ALTERNATIVE_PYTHON=/Library/Frameworks/Python.framework/Versions/3.6/bin/python3
FALLBACK_PYTHON=python3
if [ -x $PREFERRED_PYTHON ]; then
echo Using preferred python $ALTERNATIVE_PYTHON
exec $PREFERRED_PYTHON "$0" "$@"
elif [ -x $ALTERNATIVE_PYTHON ]; then
echo Using alternative python $ALTERNATIVE_PYTHON
exec $ALTERNATIVE_PYTHON "$0" "$@"
else
echo Using fallback python $FALLBACK_PYTHON
exec python3 "$0" "$@"
fi
exit 127
'''
__doc__ = """What this file does"""
print(__doc__)
import platform
print(platform.python_version())
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.