Come è possibile creare più moduli Python che condividono lo stesso spazio dei nomi compatibile per Python 2.7+ e 3.3+?Moduli spazio dei nomi compatibili Python 2 e 3 (utilizzando pip)
Chiamiamo lo spazio dei nomi test
. Ora voglio avere due moduli separati chiamati test.foo
e un altro chiamato test.bar
. Tuttavia, attualmente sto sviluppando test.helloworld
che dipende da entrambi, test.foo
e test.bar
. Entrambi sono elencati nel file requirements.txt
.
I moduli test.foo
e test.bar
stanno attualmente utilizzando il Python 2 solution pacchetti namespace:
import pkg_resources
pkg_resources.declare_namespace(__name__)
Esecuzione suggested pip-command for development modepip install -e .
diventa: ImportError: No module named 'test.helloworld'
mentre importa test.foo
o test.bar
funziona.
Il Python 3 solution per i pacchetti namespace sono impliciti pacchetti namespace in cui il pacchetto di namespace non ha alcun file __init__.py
. Purtroppo non funziona per le versioni di Python 2.
Come è possibile progettare una soluzione per Python 2 e 3 (che mi consente di utilizzare pip install -e .
)? La soluzione --egg
non funziona per me poiché è già deprecata.