Ich aktualisiere ein Modul, das ich in Python 2.7 schrieb, auf Python 3.6. Ich habe Bedenken, wie die __init__.py
in beiden Versionen der Sprache verarbeitet wird.__init__.py in Python 3.6 vs Python 2.7
Insbesondere meine __init__.py
sieht ungefähr so aus:
from FT_optimize import *
from FuzzyVars import *
from FuzzyTree import *
Wenn ich das Paket von Python 2.7 laden. Mit etwas wie folgt aus:
import FuzzyTree as ft
kann ich den Namensraum aller in der __init__.py
erklärt Module zugreifen. Etwas wie:
ft.optmize_partition(ft.FuzzyTree)
jedoch der gleiche Code in Python 3.6 einen Fehler meldet:
AttributeError: module 'FuzzyTree' has no attribute 'optimize_partition'
Jede Idee?
Aus der Python-Dokumentation habe ich keinen Unterschied der Kriterien sehen.
ist Ihr aktuelles Arbeitsverzeichnis das Verzeichnis, in dem der '__init__' steht oder haben Sie das Paket installiert? – MSeifert
Jetzt habe ich die Lösung gefunden. Es scheint, dass Sie in Python3 die relative Route zu den Dateien im Paket deklarieren müssen, auch wenn sie sich im selben Verzeichnis befinden. Also habe ich geschrieben: aus .FT_optimize import * (und das gleiche für die anderen Importe) und jetzt scheint alles zu funktionieren. –