python 模块 module 的导入方法与问题小结
python在开发中,库的引用是必不可缺的。时常会碰到一些模块加载与导入的问题。
以下为自已在开发中碰到的一些问题及解决方法。
引用方法介绍:
import module1 #常规的引用方式
import a.b.moudle1 #库引用中的.路径查找方式 a,b为文件夹,支持".."上一级
import module1 as mod1 #取个方便自已记或写的短名字
improt module1,module2,module3 #引用连写。内置通用库可以一行写,第三方库不建议
from module1 import fun1,fun2 #单独引用库中的具体类或函数,引用后fun1.attr()可以直接写成attr()
form module1 import * #等同于 import moudle1
常见问题及处理:
模块正确引用,但程序运行报没有模块,有几点因素会导致这个问题
1.需要被引用的库(文件或文件夹)的目录里没有__init__.py
在python加载一个库时会首先查询该库的目录中有没有__init__.py,并加载他.
没有__init__.py这个文件,python就不认为该文件夹或文件是库(moudle).解决方法是在目录中创建
一个__init__.py文件,内容空白即可
2.库的路径不正确,没法正确引用
python 的 import 是采用.的方式进行路径查询的。
所以/a/b/m1.py 文件的引用方法是 import a.b.m1.py.
特别注意。这个路径是相对路径,是基于执行文件来说的。
如果在执行文件中加载了另一个py文件(如os.system(b.py)),被引用的py文件如果发生库文件找不到的话。被引用的库文件路径要
以执行文件py的路径来引用。
另外,库文件的引用位置可以被设置:
a = file # __file__全局变量获取当前文件路径
b = os.path.dirname(a) # 获取文件当前目录
c = "Lib" # 自定义库文件目录名称,相对文件路径
d = os.path.join(b, c) # 文件当前目录,与自定义文件目录拼接成完整的路径
3.库的加载次序有错误
库可以在py的任何位置被引用。有些库的引用有一定的次序讲究。防止需加载的库文件中相关依赖库之后被引用。
一般先加载内置的库,(加载自定义路径加载的库,可省略),加载第三方的库
4.开发环境设置有误
一般出现在库的安装在一个环境,开发运行在另一个(虚拟)环境。这样就会出现库加载不到的情况。
5.库需要更新或重新安装
以上所以故障原因都确认没有的问题的情况下,确认一下库支持的py版本。
一般先卸载再安装(pip uninstall,pip install)或更新(pip -U)一个相关的库。
6.要导入的库文件是否存在(莫名消失)。
项目中确实碰到过这种莫名事情。看好库文件位置再Import。运行时就反复报错和反复的验证代码。
千试万试就是不对,但最后一看,原来是文件不见了。-_-
所以,当导入库时确认代码正确,但一直报错没有头绪时,可以看一下这个库文件是否“确实存在”。
问题:模块拼写有误(大小写区分),造成引用不成功
这个问题一般很容易发现,作为小结中凑字内容吧。:P
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。