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!
verschiedene Pythonversionen - richtige Shebang-Zeile?
-
- User
- Beiträge: 16
- Registriert: Freitag 13. Juli 2012, 17:17
Danke fuer deine Hilfe.
Unter Geany klappt es leider trotzdem nicht
Das Skript
funktioniert, wenn ich es in einer Konsole (./read_nc_files.py) aufrufe.
Ersetze ich die erste Zeile und schreibe stattdessen nur
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?
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)
Ersetze ich die erste Zeile
Code: Alles auswählen
#!/usr/bin/env python2.7
Code: Alles auswählen
#!/usr/bin/env python
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?
@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.
-
- 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.
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.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Da steht doch da wie man das macht:
Da trägst du dann "python2.7" ein und gut is.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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice