Se recibió el módulo ‘no puedo encontrar’ __main__ ‘en’ ‘con el paquete python

Estoy intentando liberar mi primer paquete de Python en el mundo salvaje y tuve éxito al configurarlo en PyPi y pude realizar una pip install PIP. Cuando bash ejecutar el paquete a través de la línea de comandos ( $ python etlTest ), recibo el siguiente error:

/usr/bin/python: can't find '__main__' module in 'etlTest'

Cuando ejecuto el código directamente desde mi IDE, funciona sin problemas. Estoy usando Python 2.7 y tengo scripts __init__.py donde sea necesario. ¿Qué necesito hacer para que esto funcione?

Puedo replicar fácilmente su problema, incluso sin usar su paquete:

 $ python empty .env/bin/python: can't open file 'empty': [Errno 2] No such file or directory $ mkdir empty $ python empty .env/bin/python: can't find '__main__' module in 'empty' $ python Empty .env/bin/python: can't find '__main__' module in 'Empty' 

Por lo tanto, no está llamando a su biblioteca en absoluto, solo le está dando al intérprete de Python un nombre de script inexistente, que en caso de que exista un directorio con el mismo nombre en el directorio de trabajo, este intentará ejecutarlo.

Pude instalar su paquete desde PyPi muy bien y puedo importarlo, pero no parece haber ningún punto de entrada , no se exporta nada útil en el nivel superior y no se agregan scripts ejecutables a la bandeja de Python:

 >>> import etltest >>> dir(etltest) ['__author__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__'] 

Ejecutar el archivo etlTest.py directamente como se sugiere en Inicio rápido desde sus documentos tampoco funciona:

 $ python .env/lib/python2.7/site-packages/etltest/etlTest.py 2014-07-13 17:19:56,831 - settings - DEBUG - Attempting to load .env/lib/python2.7/site-packages/.etltest-settings.yml 2014-07-13 17:19:56,832 - settings - WARNING - No such file or directory .env/lib/python2.7/site-packages/.etltest-settings.yml 2014-07-13 17:19:56,832 - settings - DEBUG - Attempting to load .env/lib/python2.7/site-packages/.etltest-settings.yml 2014-07-13 17:19:56,832 - settings - WARNING - No such file or directory .env/lib/python2.7/site-packages/.etltest-settings.yml 2014-07-13 17:19:56,832 - settings - WARNING - Could not find settings file in .env/lib/python2.7/site-packages/.etltest-settings.yml,.env/lib/python2.7/site-packages/.etltest-settings.yml. Using defaults where present. Traceback (most recent call last): File ".env/lib/python2.7/site-packages/etltest/etlTest.py", line 73, in  main(sys.argv[1:]) File ".env/lib/python2.7/site-packages/etltest/etlTest.py", line 22, in main SettingsManager().first_run_test() File ".env/lib/python2.7/site-packages/etltest/utilities/settings_manager.py", line 29, in __init__ self.app_name = etltest_config['app_name'] KeyError: 'app_name' 

Yo diría que su paquete aún no es apto para distribución. Es posible que desee limpiar algunas dependencias de su entorno de desarrollo y leer en setuptools puntos de entrada para proporcionar ejecutables de línea de comandos adecuados junto con su paquete. Además, no debería ejecutarse en modo de depuración de forma predeterminada si no se trata de una versión de prueba.

Hace poco tuve el mismo problema y finalmente encontré la solución por mi cuenta. Entonces, como decía el error, agregué un archivo __main__.py en la misma ruta que mi __init__.py .

Dentro de __main__.py agregué el siguiente código:

  from mypackage.mymodule import main main() 

main() era la función principal de mi código. Y ahora funciona.

aqui mi directorio:

 package |__dirpackage |_mypackage.py |_ __init__.py |_ __main__.py |_setup.py`