Import matplotlib

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
charlyms
User
Beiträge: 9
Registriert: Dienstag 20. Oktober 2015, 18:29

Hallo,
ich habe folgendes Problem: Ich möchte ein Programm http://www.rhysy.net/frelled.html unter Windows ausführen, dabei möchte ich, dass nur Python in der Version 2.6 einschließlich Matlibplot dieser Version aufgerufen werden. Ich habe aber auch die neueste Python-version, mit der das Programm nicht läuft, dieses wird aber aufgerufen.
Wie kann ich die Scripte dazu bringen, die ältere Version aufzurufen? Gibt es dazu einen "Zusatzbefehl" zu "import matplotlib"?
Charlyms
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Wenn du auch Python3 installiert hast könnte es mit der richtigen Shebang in der aufgerufenen Python Datei Funktionieren ( https://de.wikipedia.org/wiki/Shebang , https://docs.python.org/3/using/windows ... bang-lines).

Ansonsten musst du dir eine Starter anlegen z.B mit einer BAT Datei oder Verküpfung in die du dann
C:\Python26\pythonw.exe PFAD_ZU_DEM_SCRIPT.py aufrufst.
charlyms
User
Beiträge: 9
Registriert: Dienstag 20. Oktober 2015, 18:29

Danke für die Antwort!
Das Problem für mich ist, -ich bin blutiger Anfänger- dass eine .blend-Datei öffne um das Programm zu starten.
Ich vermute, diese öffnet die Pythonfiles. Ich weiß jetzt nicht mehr, welche Datei modifiziert werden muss.
Das Pythonscript:
# Script to convert a FITS data cube into 3 sequences of
# png images, one for each projections. Files must be
# located in Blender's directory. Requires matplotlib,
# numpy and pyfits to run.

import os
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
try:
import pyfits
except:
from astropy.io import fits as pyfits
import glob
import math
import os
import sys
import multiprocessing...
.
Kann man nicht das Script so anpassen, dass matplotlib der PythonVersion 2.6 verwendet wird? Bei mir nimmt das Script das der Version 2.7 und damit funktioniert es nicht.
Charlyms
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Das geht nicht. Es werden immer die Bibliotheken genutzt die zu dem Python Interpreter gehören.

Geh in ein CMD Fenster (cmd.exe, Terminal von Windows) wechsel in das Script Verzeichnis (cd Ordnername) und gib da dann z.B

Code: Alles auswählen

C:\Python26\python.exe SCRIPTNAME.py
für Python 2.6 oder

Code: Alles auswählen

C:\Python27\python.exe SCRIPTNAME.py
für Python 2.7.

Natürlich muss Python nicht im Ordner C:\PythonXY liegen, dann musst du den Pfad entsprechend anpassen.
charlyms
User
Beiträge: 9
Registriert: Dienstag 20. Oktober 2015, 18:29

Ja, danke!
Wie ich bereits erwähnte, öffne ich eine .blend-Datei mit der "blender.exe", um das Programm zu starten;
deshalb müßte der Link zu Python 2.6 "intern" in den Pythonscripts erfolgen, oder?
Charlyms
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Achso das war mir so nicht klar ich dachte das Script verarbeitet Blender Dateien.

Ich weiß nicht welche Version Blender benutzt, ich dachte die Benutzen sogar schon Python3? Ich bezweifel das man in Blender "einfach" eine andere Python Version als die mitgelieferte nutzen kann. Da muss dir aber jmd mit Blender Erfahrung helfen.
charlyms
User
Beiträge: 9
Registriert: Dienstag 20. Oktober 2015, 18:29

Das ist richtig!
Blender mag aktuell eine neue Version benutzen, aber das Programm erfordert aber Blender 2.49! Ich find das problematisch und merkwürdig.
Der Programmierer behauptet zwar, Kenntnisse in Blender benötige man nicht und das Programm laufe einwandfrei, aber nach einigen Hin und Her gibt es keine Antwort mehr.
Charlyms
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Ich kann dir nicht ganz folgen!?! Du benutzt Blender 2.49? Dann ist da doch auch die Python Version dabei die zu diesem Blender gehört.
charlyms
User
Beiträge: 9
Registriert: Dienstag 20. Oktober 2015, 18:29

Ja, entschuldigung!
Wie gesagt, Frelled basiert auf diese Version (leider) und ich bin mir nicht sicher, ob es nicht vielmehr so ist, das Blender in einer bestimmten Version auch ein Python in entsprechender Version erfordert und gerade nicht mitliefert. Gerade dies Zusammenspiel zwischen den Versionen macht m.E. die Sache so konfus.
Charlyms
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Ich habe mir die Doku von Blender angeschaut.

Jede Blender Version funktioniert nur mit einer bestimmten Python Version. Blender bringt (unter Windows) sein eigenes Python mit. Man kann auch ein eigenes Installiertes nutzen, muss dann aber die Version die zu Blender passt sein und erfordert Anpassung an der PYTHONPATH Variable.

Ich denke machst am einfachsten Folgendes:
1. installiertst Blender in der Richtigen Version (mit Python)
2. installierst zusätzlich Python in gleicher Version
3. jetzt installierst du die von Frelled benötigten Bibliotheken (numpy und mathplotlib, pyfits, astropy in dein System Python der richtigen Version)
4. du fügst bei deinem Script die Zeile ein damit Blenders Python die von dir installierten Python Module im Systemweiten Python findet):

Code: Alles auswählen

import sys
sys.path.append("C:\\PythonXY\\Lib\\site-packages")
Das könnte funktionieren wenn die Python Versionen gleich sind und sollte recht einfach sein.


Die einfachste Lösung ist du suchst dir eine Linux Distro mit der passenden Blender Version, installierst die Python Module und benutzt das Script einfach ;-)
charlyms
User
Beiträge: 9
Registriert: Dienstag 20. Oktober 2015, 18:29

Vielen Dank erst einmal für die Mühe!
Ich werde das ausprobieren!
Charlyms
charlyms
User
Beiträge: 9
Registriert: Dienstag 20. Oktober 2015, 18:29

Ich habe meine Taktik umgestellt und Python 2.7 deinstalliert.
Ich meine, dadurch weitergekommen zu sein.
Jedenfalls scheint Frelled nur von Python 2.6 abzuhängen.
Jetzt habe ich ein neues Problem:
Das Programm findet eine Datei 'ExportSettings.txt' nicht, dabei ist sie eindeutig im Ordner vorhanden.

Code: Alles auswählen

 File "ExportFITS_standalone3D.py", line 34, in <module>
    settings = open("ExportSettings.txt","r")
IOError: [Errno 2] No such file or directory: 'ExportSettings.txt'
.
Wie kann das seind und wie kann ich den Fehler beheben?
Charlyms
BlackJack

@charlyms: Die Datei wird relativ zum aktuellen Arbeitsverzeichnis des Prozesses geöffnet und nicht relativ zum Python-Programm. Dazu müsstest Du Dir einen entsprechenden Pfad mittels `__file__` und den Funktionen im `os.path`-Modul zusammenstellen. Der Name `__file__` ist in jedem Modul definiert und enthält den Dateinamen des Moduls.
charlyms
User
Beiträge: 9
Registriert: Dienstag 20. Oktober 2015, 18:29

Hallo,
angenommen, der Pfad der Datei liegt in C:\Downloads\Frelled\ExportSettings.txt.
Mir ist völlig unklar, was ich da machen soll. Ich habe zum Beispiel im Modul "settings=open" den absoluten Pfad angeggeben oder ein Kommando os.getcwd() mit dem Pfad. Ohne Erfolg
Hilft es vielleicht, den Ordner zu verschieben? Die Datei wird schließlich von einem Teil des Programms geschrieben, warum wird dann der Pfad nicht vom Rest gefunden??
Ich glaube allmählich, dass das Programm zu modifiezieren für einen Anfänger viel zu schwer ist und das es vielleicht unter Windows gar nicht funktioniert, obwohl der Entwickler das Gegegteil behauptet; es soll sogagar "out of the box" funktionieren!
Charlyms
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Quick Fix:

Code: Alles auswählen

settings = open("C:\\Downloads\\Frelled\\ExportSettings.txt","r")

Oder:

Code: Alles auswählen

import os
workdir = os.path.abspath(os.path.dirname(__file__))
settings = open(os.path.join([workdir,"ExportSettings.txt"]),"r")
charlyms
User
Beiträge: 9
Registriert: Dienstag 20. Oktober 2015, 18:29

Vielen Dank,
ich habe die zip-Datei neu entpackt; jetzt läuft das Programm auch ohne Modifizierung.
Vernünftige Ergebnisse erhalte ich immer nich nicht.
Charlyms
Antworten