[Python-de] Frage zur Importierung und Zugriff auf eine Funktion aus einer übergeordneten Datei
Christopher Arndt
chris.arndt at web.de
Mo Apr 5 15:06:01 CEST 2010
Ulf Rompe schrieb:
> Am 03.04.2010 12:08, schrieb René Linke:
> sys.path[0] enthält immer das Verzeichnis des aktuellen Moduls.
Das kann ich nicht bestätigen. M.E. nach enthält sys.path[0]
normalerweise einen leeren String, der als das aktuelle Verzeichnis
interpretiert wird1.
Es sei denn, irgendein anderes Modul hat vorher sys.path manipuliert.
Ich denke, eine etwas robustere Version wäre etwa so:
---> aaa/version.py <---
__version__ = '1.0'
---> end <---
---> aaa/__init__.py <---
# empty
---> end <---
---> aaa/bbb/__init__.py <---
import os
import sys
sys.path.insert(1, os.path.join(os.path.dirname(__file__), os.pardir))
from version import __version__
---> end <---
Auch diese Version funktioniert allerdings nicht mit Imports von
Paketen, die als Zip-Archive gepackt sind:
>>> import sys
>>> sys.path.insert(0, 'aaa.zip')
>>> from aaa import bbb
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "aaa/bbb/__init__.py", line 7, in <module>
ImportError: No module named version
Chris
Mehr Informationen über die Mailingliste python-de