解决:ModuleNotFoundError: No module named 'XXX' (全)文件路径目录没错的情况下请不要重名

转载于:https://blog.51cto.com/2338053/1982977

 

一、背景介绍

    1. 工具目录结构

    为了便于统一管理一些小工具,在本地创建了一个mytools的目录,子目录的结构如下:

1d1aa643fbbbd451c378fb686c2d4c4b.png

 

    2.python搜索路径

在环境变量中,增加了PYTHONPATH的设置,value为‘e:\mytools\lib\python‘。

 

二、问题描述

    做好准备工作后,信心满满的运行了一把,结果却是从未见过的‘ModuleNotFoundError: No module named 'addhosts.argument_exception'; 'addhosts' is not a package’的错误。

af8875dfbf30c3c445743f69db10508a.png

 

三、解决思路及方法

    面对这个错误,甚是不知所云啊!在编写代码的过程中执行是通过的呀。

    1.难道是项目目录结构和工具目录结构的差异造成的?

    想到这,我将addhost.py文件,由bin目录调整到lib\python目录下。

96d8a7fbc2fde51a285aaee5bed51b52.png

    目录结构调整后,工具确实可以正常工作了,但这样的目录结构不是我想要的。

 

    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. 搜索路径没生效?

    想到这赶紧验证了一下,路径在!

13a611ba87093882fbcd0c6e821ca3ee.png    

    又到pycharm中进行了二次确认。经过查看,python External Libraries里已经识别到了addhosts库了。

7759fd325e8d142d0270060a0a123a5c.png

    到此就更让我疑惑了,addhosts确实是个package!也能识别出addhosts是个类库,为什么会提示‘addhosts’ is not a package呢 ?j_0065.gif

 

    4.峰回路转!

    抱着试试看的心态,我在项目中新建了python file,随便命名为addhoststest,然后将addhosts.py中的代码全部粘贴到addhoststest.py文件中。

 3d8ac375f4fe692472064fa4b20b172f.png

    run一下,结果竟然成功了。

    至此,终于明白失败的原因了。为了验证我的推断,又做了个小实验。在项目目录下,新建了html.py文件,导入htmlpackage下的类。运行结果也出现了is not a package的错误。

6d1318ace1c302b38655fd168af38f15.png

 

四、总结

  1. 可以设置PYTHONPATH环境变量,来增加python的搜索路径;

  2. package里的__init__.py文件,可以为空文件;

  3. 运行文件名称不要与类库中的package同名。

解决"AttributeError: module 'distutils' has no attribute 'version'"错误时,可以参考以下方法: 1. 确保安装了所需的依赖包。根据引用,在Debian/Ubuntu系统上,你需要安装python-all-dev和portaudio19-dev两个开发包。你可以使用以下命令来安装它们: sudo apt-get install python-all-dev sudo apt-get install portaudio19-dev 2. 检查你的文件名是否与要使用的模块重名。根据引用,该错误有时是由于文件名称与要使用的模块重名造成的。确保你的文件名称与要使用的模块名称没有冲突。 希望这些方法可以帮助你解决"AttributeError: module 'distutils' has no attribute 'version'"错误。如果问题仍然存在,提供更多的错误信息和上下文,以便我们能够更具体地帮助你解决该问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ModuleNotFoundError: No module named 'pyaudio'](https://blog.csdn.net/orDream/article/details/90605085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [关于python:AttributeError: module 'xxx' has no attribute 'xxx'的错误解决](https://blog.csdn.net/weixin_35737303/article/details/80203586)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [wedding-website:Bison Hubert + Vanessa Browne的婚礼网站](https://download.csdn.net/download/weixin_42107165/16246348)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值