簡體   English   中英

收到&#39;在&#39;中找不到&#39;__main__&#39;模塊<packageName> &#39; 帶有 python 包

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM