Path: csiph.com!feeder.erje.net!2.eu.feeder.erje.net!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!fu-berlin.de!uni-berlin.de!not-for-mail From: Peter Otten <__peter__@web.de> Newsgroups: de.comp.lang.python Subject: Re: [Python-de] import und vollqalifizierter Dateiname Date: Wed, 24 Aug 2016 21:37:39 +0200 Organization: None Lines: 48 Message-ID: References: <20372e6f-34da-037f-50b7-b85d09e83e44@chrisarndt.de> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8Bit X-Trace: news.uni-berlin.de BfBE+mf3cXW/kZZICGUQngp501rGKqc5aPbsoC+6hJ4Q== Return-Path: X-Original-To: python-de@python.org Delivered-To: python-de@mail.python.org X-Injected-Via-Gmane: http://gmane.org/ User-Agent: KNode/4.13.3 X-BeenThere: python-de@python.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Die Deutsche Python Mailingliste List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: X-Mailman-Original-References: <20372e6f-34da-037f-50b7-b85d09e83e44@chrisarndt.de> Xref: csiph.com de.comp.lang.python:4519 Christopher Arndt wrote: > Am 24.08.2016 um 15:56 schrieb Hermann Riemann: >> Bei import geht kein vollqualifizierter Dateiname, >> der den Buchstabe / enthält. > > https://docs.python.org/3/tutorial/modules.html > https://docs.python.org/3/reference/import.html > > Merke: Python ist nicht C und ein Python-Modul keine Header-Datei. ;) > > So geht's (Voraussetzung: alle Verzeichnisse enthalten ein '__init__.py' > Datei): Obwohl es nicht so recht zu "Explicit is better than implicit" passt: in Python 3 ist ist die __init__.py nicht unbedingt erforderlich: $ python3 -c 'import a.b.c.p1' Traceback (most recent call last): File "", line 1, in ImportError: No module named 'a' $ mkdir -p a/b/c/ $ echo 'print("hello from p1")' > a/b/c/p1.py $ python3 -c 'import a.b.c.p1' hello from p1 Siehe auch https://www.python.org/dev/peps/pep-0420/‎ > import a.b.c.p1 > import u.v.w.p2 > import u.v.w.p3 > import x.y.z.p2 > import x.y.z.p3 > > a.b.c.p1.foo() > u.v.w.p2.foo() > u.v.w.p2.bar() > > usw. > > Oder so: > > from .a.b.c import p > from .u.v.w import p as p2 > > usw.