verschiedene Pythonversionen - richtige Shebang-Zeile?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PaulchenPanther
User
Beiträge: 16
Registriert: Freitag 13. Juli 2012, 17:17

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!
BlackJack

@PaulchenPanther: #!/usr/bin/env python2.7
PaulchenPanther
User
Beiträge: 16
Registriert: Freitag 13. Juli 2012, 17:17

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?
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.
PaulchenPanther
User
Beiträge: 16
Registriert: Freitag 13. Juli 2012, 17:17

@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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten