1、背景介紹html
1. 工具目錄結構
python
爲了便於統一管理一些小工具,在本地建立了一個mytools的目錄,子目錄的結構以下:
網絡
2.python搜索路徑
ide
在環境變量中,增長了PYTHONPATH的設置,value爲‘e:\mytools\lib\python‘。工具
2、問題描述測試
作好準備工做後,信心滿滿的運行了一把,結果倒是從未見過的‘ModuleNotFoundError: No module named 'addhosts.argument_exception'; 'addhosts' is not a package’的錯誤。
3d
3、解決思路及方法htm
面對這個錯誤,甚是不知所云啊!在編寫代碼的過程當中執行是經過的呀。
blog
1.難道是項目目錄結構和工具目錄結構的差別形成的?
ci
想到這,我將addhost.py文件,由bin目錄調整到lib\python目錄下。
目錄結構調整後,工具確實能夠正常工做了,但這樣的目錄結構不是我想要的。
2. 'addhosts' is not a package?
lib下的addhosts中確實是有__init__.py這個文件啊,爲何會提示'addhosts' is not a package ? 是個人__init__py文件有問題嗎?致使python不能將addhosts識別爲一個包?
因而我翻閱了python書籍,經過網絡查詢了資料,對比了python第三方庫site-packages下的庫文件。
最終確認問題不在__init__.py文件上。
3. 搜索路徑沒生效?
想到這趕忙驗證了一下,路徑在!
又到pycharm中進行了二次確認。通過查看,python External Libraries裏已經識別到了addhosts庫了。
到此就更讓我疑惑了,addhosts確實是個package!也能識別出addhosts是個類庫,爲何會提示‘addhosts’ is not a package呢 ?
4.峯迴路轉!
抱着試試看的心態,我在項目中新建了python file,隨便命名爲addhoststest,而後將addhosts.py中的代碼所有粘貼到addhoststest.py文件中。
run一下,結果居然成功了。
至此,終於明白失敗的緣由了。爲了驗證個人推斷,又作了個小實驗。在項目目錄下,新建了html.py文件,導入htmlpackage下的類。運行結果也出現了is not a package的錯誤。
4、總結
能夠設置PYTHONPATH環境變量,來增長python的搜索路徑;
package裏的__init__.py文件,能夠爲空文件;
運行文件名稱不要與類庫中的package同名。