[英]Received 'can't find '__main__' module in '<packageName>' with python package
我正在嘗試在野外發布我的第一個 Python 包,並且我成功地在 PyPi 上設置了它並且能夠執行pip install
。 當我嘗試通過命令行 ( $ python etlTest
) 運行包時,收到以下錯誤:
/usr/bin/python: can't find '__main__' module in 'etlTest'
當我直接從我的 IDE 運行代碼時,它可以正常工作。 我正在使用 Python 2.7 並在需要時使用__init__.py
腳本。 我需要做什么才能讓它發揮作用?
我最近遇到了同樣的問題,最后自己找到了解決方案。 因此,正如錯誤所說,我在與__init__.py
相同的路徑中添加了一個文件__main__.py
。
在__main__.py
我添加了以下代碼:
from mypackage.mymodule import main
main()
main()
是我代碼的主要功能。 它現在有效。
這是我的目錄:
package
|__dirpackage
|_mypackage.py
|_ __init__.py
|_ __main__.py
|_setup.py`
我可以輕松地復制您的問題,實際上即使不使用您的包:
$ 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__']
按照文檔中Quickstart 中的建議直接運行 etlTest.py 也不起作用:
$ 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
入口點以提供適當的命令行可執行文件以及您的包。 此外,如果它不是某種測試版本,則默認情況下它不應在調試模式下運行。
只需將名稱 __init__.py 文件更改為 __main__.py
我遇到了同樣的問題,並通過確保我位於您嘗試運行的包的正確目錄中來解決它。
對於 Windows,在控制台中鍵入dir
,而在 Linux/macOS 上 - ls
以查看您的當前目錄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.