Получен модуль "__main__" в "<имя_пакета>" с пакетом python.
Я пытаюсь выпустить свой первый пакет Python в дикой природе, и мне удалось настроить его на PyPi и смог сделать pip install
, Когда я пытаюсь запустить пакет через командную строку ($ python etlTest
), Я получаю следующую ошибку:
/usr/bin/python: can't find '__main__' module in 'etlTest'
Когда я запускаю код прямо из моей IDE, он работает без проблем. Я использую Python 2.7 и имею __init__.py
сценарии, где это необходимо. Что мне нужно сделать, чтобы это работало?
4 ответа
Я могу легко воспроизвести вашу проблему, даже не используя ваш пакет:
$ 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'
Таким образом, вы вообще не вызываете свою библиотеку, вы просто даете интерпретатору Python несуществующее имя сценария, который в случае, если в рабочем каталоге есть каталог с одинаковым именем (даже без учета регистра), он пытается выполнить.
Я смог установить ваш пакет из PyPi просто отлично и могу импортировать его нормально, но, похоже, нет никакой точки входа в него, ничего полезного не экспортируется на верхний уровень, и в Python bin не добавляются исполняемые скрипты:
>>> import etltest
>>> dir(etltest)
['__author__', '__builtins__', '__doc__', '__file__', '__name__', '__package__',
'__path__', '__version__']
Непосредственный запуск etlTest.py, как предлагается в Quickstart из ваших документов, также не работает:
$ 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 <module>
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'
Я бы сказал, что ваша посылка еще не пригодна для распространения. Возможно, вы захотите очистить некоторые зависимости от вашей среды разработки и прочитать setuptools
точки входа, чтобы обеспечить правильные исполняемые файлы командной строки вместе с вашим пакетом. Также он не должен работать в режиме отладки по умолчанию, если это не тестовый выпуск.
Я недавно получил ту же самую проблему и наконец нашел решение самостоятельно. Так как ошибка сказала, я добавил файл __main__.py
на том же пути, что мой __init__.py
,
внутри __main__.py
Я добавил следующий код:
from mypackage.mymodule import main
main()
main()
была основная функция моего кода. И это работает сейчас.
вот мой каталог:
package
|__dirpackage
|_mypackage.py
|_ __init__.py
|_ __main__.py
|_setup.py`
У меня была такая же проблема, и я решил ее, убедившись, что нахожусь в правильном каталоге пакета, который вы пытаетесь запустить.
Для Windows введите
dir
в консоли, а в Linux / macOS -
ls
чтобы увидеть ваш текущий каталог