Seite 1 von 1

verschiedene Pythonversionen - richtige Shebang-Zeile?

Verfasst: Montag 7. Oktober 2013, 20:06
von PaulchenPanther
Hallo zusammen,

ich stehe vor folgendem Problem:
Ich weiss nicht, wie ich zu Beginn meines Skripts die sogenannte Shebang-Zeile derart umaendere, dass sie auf die richtige Pythonversion/den richtigen Interpreter zugreift.
Ich moechte gerne mit einem Modul (netCDF4) arbeiten, das laut des System-Admins, der alles fuer mich installiert (Arbeitsrechner, ich habe keinen root-access),
auch fuer Python 2.7.5 installiert ist.
Ich benutze Geany als Editor und schaffe es nicht, da ein Skript auszufuehren, welches auf obiges Modul zurueckgreifen moechte.

Gebe ich lediglich 'python' in die Konsole ein, wird die Version 2.6.6 aufgerufen.
Gebe ich in einer Konsole explizit 'ipython2.7' ein, kann ich das Modul interaktiv laden und damit arbeiten.
Es ist also "irgendwo" vorhanden. Wie kriege ich es hin, dass auch ganze Skripte mit der Python 2.7.5 Version ausgefuehrt werden?

Es waere prima, wenn mir jemand helfen koennte. Danke schon vorab dafuer!

Re: verschiedene Pythonversionen - richtige Shebang-Zeile?

Verfasst: Montag 7. Oktober 2013, 20:17
von BlackJack
@PaulchenPanther: #!/usr/bin/env python2.7

Re: verschiedene Pythonversionen - richtige Shebang-Zeile?

Verfasst: Montag 7. Oktober 2013, 20:29
von PaulchenPanther
Danke fuer deine Hilfe.

Unter Geany klappt es leider trotzdem nicht :(

Das Skript

Code: Alles auswählen

#!/usr/bin/env python2.7

import netCDF4
f = netCDF4.Dataset('/home/data/*.nc', 'r')

for a in f.variables:
	print(a)
funktioniert, wenn ich es in einer Konsole (./read_nc_files.py) aufrufe.

Ersetze ich die erste Zeile

Code: Alles auswählen

 #!/usr/bin/env python2.7 
und schreibe stattdessen nur

Code: Alles auswählen

 #!/usr/bin/env python
erhalte ich folgenden Fehler:
Traceback (most recent call last):
File "./test.py", line 12, in <module>
import netCDF4
ImportError: No module named netCDF4

Warum dem so ist, ist mir jetzt klar. Was ich aber noch nicht verstehe>
Beim Ausfuehren in Geany bleibt dieser Fehler bestehen, ganz gleich, welche Shebang-Zeile ich verwende. Kann sich das jemand erklaeren?

Re: verschiedene Pythonversionen - richtige Shebang-Zeile?

Verfasst: Montag 7. Oktober 2013, 20:43
von BlackJack
@PaulchenPanther: Kann es sein das sich Geany nicht um die Zeile schert sondern entweder ``python`` irgendwo hart kodiert hat, oder aber in den Einstellungen irgendwo hinterlegt hat? Wenn ein Editor solche zicken macht, würde ich das einfach vom Terminal aus starten. So ist man sich dann sicher dass sich das Programm auch ohne Editor oder IDE so verhält wie man das erwartet.

Re: verschiedene Pythonversionen - richtige Shebang-Zeile?

Verfasst: Montag 7. Oktober 2013, 20:54
von PaulchenPanther
@BlackJack: Danke nochmal. Das Problem liegt nun wirklich bei Geany. Dieser Editor ignoriert wohl das Shebang. Man kann irgendwo eintragen, welche Version von Python benutzt werden moechte. Ich habe dazu auch folgenden anderen Thread gefunden
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=636608
Problem ist also soweit geloest. Wenn ich es jetzt noch hinkriege, Geany klarzumachen, dass ich gern Python 2.7 haette, koennen wir Freunde bleiben. Ansonsten starte ich halt vom Terminal aus.

Re: verschiedene Pythonversionen - richtige Shebang-Zeile?

Verfasst: Dienstag 8. Oktober 2013, 13:47
von Leonidas
Da steht doch da wie man das macht:
Enrico Tröger hat geschrieben:Geany won't evaluate the shebang when executing Python, Shell or whatever scripts and this is why your #!/usr/bin/env line has no effect. Instead, Geany uses the configured command in Build->Set Build Commands to execute the script. There you can easily change the default ("python") to "python3" or whatever you want.
Da trägst du dann "python2.7" ein und gut is.