你所不知道的 【ModuleNotFoundError: No module named ''; '' is not a 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的错误。

四、总结

  1. 可以设置PYTHONPATH环境变量,来增加python的搜索路径;
  2. package里的__init__.py文件,可以为空文件;
  3. 运行文件名称不要与类库中的package同名。

你所不知道的 【ModuleNotFoundError: No module named ''; '' is not a package】

时间: 2024-08-29 21:12:26

你所不知道的 【ModuleNotFoundError: No module named ''; '' is not a package】的相关文章

Scrapy运行报错:ModuleNotFoundError: No module named 'douban.douban'

运行scrapy爬虫报错: from douban.douban.items import DoubanItem ModuleNotFoundError: No module named 'douban.douban' 解决问题注意两点: 1. 引入items的路径.items包实际是在上一级目录的,直接对着教程操作容易忽略这个问题 2. douban.items 这个导入包,不知为何无法识别,只能以..items 的方式导入 from douban.douban.items import Do

你所不知道的html5与html中的那些事(二)

文章简介: 关于html5相信大家早已经耳熟能详,但是他真正的意义在具体的开发中会有什么作用呢?相对于html,他又有怎样的新的定义与新理念在里面呢?为什么一些专家认为html5完全完成后,所有的工作都可以达到真正的云方式呢?这一系列的问题你是否已经想明白了呢? 本系列文章将为您一一解答你所不知道的关于html5与html中的那些事;具体会包括如:html5新的理念与想法,html5的新标签的用意与具体开发中场景应用,html5与css3的感情经历(用法搭配),包括html5的父亲html的一些

你所不知道的html5与html中的那些事(一)

分类: Web开发 文章简介: 关于html5相信大家早已经耳熟能详,但是他真正的意义在具体的开发中会有什么作用呢?相对于html,他又有怎样的新的定义与新理念在里面呢?为什么一些专家认为html5完全完成后,所有的工作都可以达到真正的云方式呢?这一系列的问题你是否已经想明白了呢? 本系列文章将为您一一解答你所不知道的关于html5与html中的那些事;具体会包括如:html5新的理念与想法,html5的新标签的用意与具体开发中场景应用,html5与css3的感情经历(用法搭配),包括html5

JavaScript你所不知道的困惑(2)

困惑一: var obj1 = new Object(); var obj2 = obj1; obj1.name = "阳光小强"; alert(obj2.name); //输出结果:阳光小强 JavaScript中的5个基本类型:Undefined.Null.Boolean.Number和String都是按值访问的,可以操作保存在变量中的实际的值,内存空间如下: var num1 = 5; var num2 = num1; 引用类型的值是保存在内存中的对象,JavaScript不允许

JavaScript你所不知道的困惑(1)

困惑一: 先看一个例子: function test(){ message = "hi"; } test(); alert(message); 会输出字符串"hi" 在函数内部使用var定义的变量是局部变量,省略var操作符的变量是全局变量. 困惑二: alert(undefined == null) 结果是"true" 我们知道在js中分为基本类型和引用类型,基本类型包括number.string.boolean.undefined.null.

你所不知道的html5与html中的那些事(四)——文本标签

文章简介: 关于html5相信大家早已经耳熟能详,但是他真正的意义在具体的开发中会有什么作用呢?相对于html,他又有怎样的新的定义与新理念在里面呢?为什么一些专家认为html5完全完成后,所有的工作都可以达到真正的云方式呢?这一系列的问题你是否已经想明白了呢? 本系列文章将为您一一解答你所不知道的关于html5与html中的那些事;具体会包括如:html5新的理念与想法,html5的新标签的用意与具体开发中场景应用,html5与css3的感情经历(用法搭配),包括html5的父亲html的一些

你所不知道的html5与html中的那些事(三)

文章简介: 关于html5相信大家早已经耳熟能详,但是他真正的意义在具体的开发中会有什么作用呢?相对于html,他又有怎样的新的定义与新理念在里面呢?为什么一些专家认为html5完全完成后,所有的工作都可以达到真正的云方式呢?这一系列的问题你是否已经想明白了呢? 本系列文章将为您一一解答你所不知道的关于html5与html中的那些事;具体会包括如:html5新的理念与想法,html5的新标签的用意与具体开发中场景应用,html5与css3的感情经历(用法搭配),包括html5的父亲html的一些

你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)

前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的一些问题和解决方法,可点击查看,我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载的流程,并且根据加载过程中所遇到的一系列问题提供解决方案. 其实SQL Server作为微软的一款优秀RDBMS,它启动的过程中,本身所带的那些系统库发生问题的情况相对还是很少的,我们在平常使用中,出问题的大部分集中于我们自己建立的用户数据库. 而且,相对于侧重面而言,其实我们更关注的是我们自己建立的用户数

[那些你所不知道的鬼畜写法]数据结构小探

我有种要出系列的节奏? 这次记一下我所遇到过的数据结构一些神奇的维护方法:  (只是记一下而已,也许会仔细讲讲) 1.差分大法 出自 zkw 大神 <统计的力量——线段树全接触>,运用面虽然不广,但每次用出来威力都是相当大 机智的减少你的代码量 2.保存操作而不是值 出自 clj 大神 在 WC 上对可追溯数据结构的论文(跪跪跪跪),虽然 OI 中应该(?)不会用到吗,但是思路还是很好的 只保存操作在很多时候效果非凡,以时间为权值维护一棵 splay 或是别的支持区间操作的平衡树,然后不但支持