2016-03-24 5 views
1

ich die folgenden Dateien:Ist es richtig, dass "import pkg.module" äquivalent ist "import module" in pkg/__ init.py__ in 2.7 aber nicht in 3.5?

pkg/__init_.py 
pkg/module.py 

, nun in pkg/__init__.py, wie kann ich module importieren?

Ist es

import pkg.module 

oder

import module 

?

Ist es richtig, dass in Python 2.7 beide Methoden funktionieren, während Python 3.x die erste benötigt?

+0

Es ist 'Import module'. Ich verstehe nicht, warum du den absoluten directory diracy Pfad brauchen solltest, zumindest in python3 wird es definitiv nicht benötigt –

+0

@h_e_u_r_e_k_a Es ist kein 'Import Modul'. Es funktioniert nicht in Python 3! Und in Python 2 vielleicht mehrdeutig, deshalb ist das in Python 3 nicht mehr möglich. Stellen Sie sich ein Modul namens Modul in der Standardbibliothek oder einen anderen Importpfad vor. Worauf bezieht sich 'Importmodul' dann? – BlackJack

+0

@BlackJack: Das heißt also meine Annahme ist dann "richtig"? Könnten Sie es in eine kurze Antwort bringen? (Ich kann es auch tun.) – Michael

Antwort

2

Ihre Annahmen sind grundsätzlich richtig.

Der zweite Weg möglicherweise nicht in Python 2.7, wenn es ein Modul module im Modulsuchpfad (sys.path) vor dem einen mit dem Namen ist, dass Sie tatsächlich importieren mögen. Aus diesem Grund hat Python 3 auf absolute Importe umgestellt, um den Import sicherer und berechenbarer zu machen.

Es ist möglich, den Import von Python 2.7 zu ändern, um Python 3 mit from __future__ import absolute_import am Anfang des Moduls zu arbeiten.

Beide Python-Versionen auch einem expliziten relativen Import innerhalb Pakete ermöglichen:

from . import module