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同名。