2015-08-10 35 views
15

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.

risposta

0

vedere la risposta a similar question per istruzioni complete, che funziona sia su Python 2 e 3.

Insomma, setup.py deve avere unica nome per ogni modulo e un comunenamespace_packages definizione oltre a __init__.py dichiarando lo spazio dei nomi impostato su namespace_packages.

Se si riscontrano ancora problemi, inviare il numero setup.py e __init__.py per ciascun modulo.