[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