Wie ist es möglich, mehrere Python-Module zu erstellen, die denselben Namespace für Python 2.7+ und 3.3+ verwenden?Python 2 & 3 kompatible Namespace-Module (mit Pip)
Nennen wir den Namensraum test
. Jetzt möchte ich zwei separate Module haben, die test.foo
genannt werden und eine andere, die test.bar
genannt wird. Ich entwickle jedoch derzeit test.helloworld
, was sowohl von test.foo
als auch von test.bar
abhängt. Beide sind in der requirements.txt
Datei aufgeführt.
Die Module test.foo
und test.bar
sind die Python 2 solution für Namespace-Pakete derzeit verwenden:
import pkg_resources
pkg_resources.declare_namespace(__name__)
Ausführen des suggested pip-command for development modepip install -e .
verwandelt sich in: ImportError: No module named 'test.helloworld'
während test.foo
oder test.bar
Import funktioniert.
Die Python 3 solution für Namespace-Pakete sind Implicit-Namespace-Pakete wo die Namespace-Paket keine __init__.py
Datei hat. Dies funktioniert leider nicht für Python 2-Versionen.
Wie kann ich eine Lösung für beide Python 2 und 3 (die mir erlaubt, pip install -e .
zu verwenden) entwerfen? Die --egg
Lösung funktioniert nicht für mich, da es bereits veraltet ist.