Seite 1 von 1

Import matplotlib

Verfasst: Sonntag 22. November 2015, 22:34
von charlyms
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

Re: Import matplotlib

Verfasst: Sonntag 22. November 2015, 22:59
von Sr4l
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.

Re: Import matplotlib

Verfasst: Montag 23. November 2015, 07:54
von charlyms
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

Re: Import matplotlib

Verfasst: Montag 23. November 2015, 19:36
von Sr4l
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.

Re: Import matplotlib

Verfasst: Montag 23. November 2015, 20:21
von charlyms
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

Re: Import matplotlib

Verfasst: Montag 23. November 2015, 20:33
von Sr4l
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.

Re: Import matplotlib

Verfasst: Montag 23. November 2015, 20:45
von charlyms
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

Re: Import matplotlib

Verfasst: Montag 23. November 2015, 23:31
von Sr4l
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.

Re: Import matplotlib

Verfasst: Dienstag 24. November 2015, 12:26
von charlyms
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

Re: Import matplotlib

Verfasst: Dienstag 24. November 2015, 22:44
von Sr4l
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 ;-)

Re: Import matplotlib

Verfasst: Mittwoch 25. November 2015, 13:04
von charlyms
Vielen Dank erst einmal für die Mühe!
Ich werde das ausprobieren!
Charlyms

Re: Import matplotlib

Verfasst: Freitag 27. November 2015, 20:11
von charlyms
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

Re: Import matplotlib

Verfasst: Freitag 27. November 2015, 20:42
von 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.

Re: Import matplotlib

Verfasst: Samstag 28. November 2015, 20:39
von charlyms
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

Re: Import matplotlib

Verfasst: Dienstag 1. Dezember 2015, 11:33
von Sr4l
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")

Re: Import matplotlib

Verfasst: Sonntag 6. Dezember 2015, 22:54
von charlyms
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