2017-10-24 4 views
1

Heute ist mein erster Tag mit Python und ich verwende pyenv, um mit Python-Versionen umzugehen. Ich installierte erfolgreich die neueste Version (3.6.3) und als global gesetzt mitPythons Shebang wertet eine andere Python-Version als der gleiche Pfad in der Konsole

pyenv global 3.6.3 

Wenn nun im Terminal Ausführung

/usr/bin/env python 

Ich erhalte die erwartete richtige Antwort

Python 3.6.3 (default, Oct 24 2017, 02:48:04) 
[GCC 4.8.4] on linux 
Type "help", "copyright", "credits" or "license" for more information. 

jedoch Das Problem, das ich habe, ist, dass Shebang, den ich in meiner Skriptdatei verwende, den gleichen /usr/bin/env python Pfad hat, aber wer weiß, warum es immer noch die vorinstallierte Systemversion von Python evaluiert ist 2.7.6.

Ich bin Überprüfung der von Skript-Version wie dieser

#!/usr/bin/env python 

import sys 
print("Content-type:text/html\r\n\r\n") 
print(sys.version) 

und was ich mit dem Browser gedruckt werden (mit Apache2) ist

2.7.6 (default, Oct 26 2016, 20:30:19) [GCC 4.8.4] 

Ich war Apache neu zu starten, mit pyenv configs spielen Nach irgendwelchen Hinweisen googeln, aber keinen Erfolg.

Hat jemand eine Idee, was hier falsch ist? Danke vielmals!

+0

[diese] (https:

Also, wenn Sie wirklich ein Skript nur unter einer bestimmten Python-Version ausgeführt werden, sollten Sie diese spezielle Python-Version im shebang verwenden : //stackoverflow.com/questions/1534210/use-different-python-version-with-virtualenv/39713544#39713544) behauptet, dass Pyenv für 3.6+ veraltet ist – Nae

Antwort

1

pyenv können Sie die verwendete Python-Version auf einem pro Benutzer Basis festlegen.

Also, wenn Sie es auf 3.6.3 für den Benutzer setzen, werden andere Benutzer (wie www-data) nicht betroffen sein.

Der Webserver wird höchstwahrscheinlich als spezieller Benutzer ausgeführt (normalerweise www-data), so dass Änderungen, die Sie an Ihren persönlichen Einstellungen vornehmen, keinen Einfluss auf Apache haben.

auch sagen, dass ich denke, es ist wirklich eine schlechte Idee ist, verwenden pyenv auf so etwas wie einem Server in jedem Fall: Ihr Skript nicht sein könnte die einzige, die eine #!/usr/bin/env python shebang verwendet. Es kann auch nicht der einzige sein, der darauf angewiesen ist, dass er von einer bestimmten Python-Version aufgerufen wird (und die Wahrscheinlichkeit, dass die meisten Skripte mit #!/usr/bin/env python eigentlich Python2.7-Skripte sind).

#!/usr/bin/env python3.7 

oder sogar

#!/usr/bin/python3.8 
Verwandte Themen