你所不知道的 【ModuleNotFoundError: No module named ''; '' is not a package】
2017-11-18 13:04
1341 查看
一、背景介绍
1. 工具目录结构
为了便于统一管理一些小工具,在本地创建了一个mytools的目录,子目录的结构如下:
2.python搜索路径
在环境变量中,增加了PYTHONPATH的设置,value为‘e:\mytools\lib\python‘。
二、问题描述
做好准备工作后,信心满满的运行了一把,结果却是从未见过的‘ModuleNotFoundError: No module named 'addhosts.argument_exception'; 'addhosts' is not a package’的错误。
三、解决思路及方法
面对这个错误,甚是不知所云啊!在编写代码的过程中执行是通过的呀。
1.难道是项目目录结构和工具目录结构的差异造成的?
想到这,我将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的错误。
四、总结
可以设置PYTHONPATH环境变量,来增加python的搜索路径;
package里的__init__.py文件,可以为空文件;
运行文件名称不要与类库中的package同名。
1. 工具目录结构
为了便于统一管理一些小工具,在本地创建了一个mytools的目录,子目录的结构如下:
2.python搜索路径
在环境变量中,增加了PYTHONPATH的设置,value为‘e:\mytools\lib\python‘。
二、问题描述
做好准备工作后,信心满满的运行了一把,结果却是从未见过的‘ModuleNotFoundError: No module named 'addhosts.argument_exception'; 'addhosts' is not a package’的错误。
三、解决思路及方法
面对这个错误,甚是不知所云啊!在编写代码的过程中执行是通过的呀。
1.难道是项目目录结构和工具目录结构的差异造成的?
想到这,我将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的错误。
四、总结
可以设置PYTHONPATH环境变量,来增加python的搜索路径;
package里的__init__.py文件,可以为空文件;
运行文件名称不要与类库中的package同名。
相关文章推荐
- ModuleNotFoundError: No module named 'polls.apps.PollsConfigdjango'; 'polls.apps ' is not a package
- python导入包失败ModuleNotFoundError: No module named 'matplotlib.pyplot'; 'matplotlib' is not a package
- 报错 No module named 'email.utils'; 'email' is not a package解决方法
- No module named 'html.entities'; 'html' is not a package
- No module named 'keras.datasets'; 'keras' is not a package
- ImportError: No module named 'html.entities'; 'html' is not a package
- ModuleNotFoundError: No module named 'xgboost',windows下初安装xgboost
- pyhton 安装pip 以及 numpy (解决python:ModuleNotFoundError:No module named "numpy" 等类似缺包问题
- Mac下ImportError: No module named content/ModuleNotFoundError: No module named 'itchat.content';
- centos ModuleNotFoundError: No module named '_sqlite3'
- 有效解决windows10安装好Appium-Python-Client后,pycharm运行时提示ModuleNotFoundError: No module named 'appium'
- 错误解决:Unable to add module to the current project as it is not of package
- ModuleNotFoundError: No module named 'numpy'——python3.6安装numpy
- python3.6.0 win10 64位 scrapy ModuleNotFoundError: No module named 'win32api' 问题解决
- python3.5 ModuleNotFoundError: No module named 'PIL'
- Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
- ModuleNotFoundError: No module named 'pyquery'解决办法
- Uncaught Error: [$injector:nomod] Module 'xxx' is not available! You either misspelled the m
- 关于在centos下安装python3.7.0以上版本时报错ModuleNotFoundError: No module named '_ctypes'的解决办法
- ModuleNotFoundError: No module named '_tkinter'