导航:首页 > 编程语言 > python导入模块报错

python导入模块报错

发布时间:2024-03-22 12:53:28

① 请问为什么python3.7.3import导入模块不成功

1、主要你是要当前使用的环境中是否已经安装了对应的模块。
2、检查当前使用的环境是否为虚拟环境的,如果为虚拟环境,则之前在python路径下安装的模块应该是不能使用的,所有还需要重新在虚拟环境中安装对应的模块。
3、在你展现的程序中呈现的是语法错误,然而并非是模块导入错误,所以好好检查你的程序出错的地方。

② python 导入模板 pywintypes 报错

你要安装pywin32模块,
然后把pywintypes34.dll所在目录加到系统环境变量Path里,就可以了。

③ Python的错误导入已经安装模块问题,怎么解决

当遇到无法导入某个python模块时,可能会是没有安装某个模块,也有可能是某模块在加载过程中失败,也有可能是陷入了循环导入的问题。本文详细解释了这个问题。
1. 模块未安装或者路径不对
ImportError: No mule named myMole

有两种可能,一是该模块没有安装,一般可以用
pip install %mole_name%

来解决。注意有时候模块安装包名并不等于要导入的模块名。这种情况下可以通过pip search | list命令来尝试找到正确的包。
另一种情况就是包虽然安装了,但当前运行的程序加载的路径有错。python运行时将从以下位置尝试加载python moles:
* 当前目录
* 环境变量$PYTHONPATH所指示的值,这是一个由“:”分隔的字符串,各个子字符串都是文件系统的一个路径。
* 标准库目录,如dist-site-packages下的模块。
* 在.pth文件中指定的路径,如果存在.pth文件的话。
可以使用以下方式来查看python运行时的包含路径:
?

12

import sysprint(sys.path)

在运行出错的脚本装头部加上这一段代码,然后在控制台中查看打印出来的python类库路径,检查安装包是否已包含在上述路径中。
***可以通过下面的方式将未包含在路径中的模块临时包含进来:***
sys.path.append("path/to/mole")

另外,还可以在shell窗口中查看当前的python包含路径:
echo $PYTHONPATH
2. 无法导入已存在的模块
如果要导入的模块包含了native代码,并且native代码加载(初始化)失败时,就会导致这种错误。使用ssl,
gevent等涉及native的模块时,如果对应的native程序并未安装,则会出现这样的错误。
另一种错误情况是,使用相对路径导入时,父模块还未导入成功。见下面的代码:
?

12345

main.pymypackage/ __init__.pymymole.pymyothermole.py

mymole.py如下所示:
?

123456789101112

#!/usr/bin/env python3 # Exported functiondef as_int(a): return int(a) # Test function for mole def _test(): assert as_int('1') == 1 if __name__ == '__main__': _test()

以及myothermole代码如下所示:
?

1234567891011121314

#!/usr/bin/env python3 from .mymole import as_int # Exported functiondef add(a, b): return as_int(a) + as_int(b) # Test function for mole def _test(): assert add('1', '1') == 2 if __name__ == '__main__': _test()

如果执行mypackage/myothermole,则会报以下错误:
Traceback (most recent call last):
File "myothermole.py", line 3, in
<mole>
from .mymole import as_int
SystemError: Parent mole
'' not loaded, cannot perform relative import
[这篇文章](#Relative imports in
Python 3)给出了更详细的解答。
3. 循环导入
这种错误称之为"circular (or cyclic) imports"。是python独有的一种导入错误,在象java这样的语言中就不存在。
假设有如下两个文件,a.py和b.py:
?

1234567

#a.pyprint "a in"import sysprint "b imported: %s" % ("b" in sys.moles, )import bprint "a out"print b.x

以及:
?

12345

#b.pyprint "b in"import aprint "b out"x = 3

执行python a.py,将得到以下结果:
?

123456789101112131415

$ python a.pya in b imported: Falseb ina inb imported: Truea outTraceback (most recent call last): File "a.py", line 4, in <mole> import b File "/home/shlomme/tmp/x/b.py", line 2, in <mole> import aFile "/home/shlomme/tmp/x/a.py", line 7, in <mole> print b.xAttributeError: 'mole' object has no attribute 'x'

出现这种情况的原因是产生了循环导入。循环导入,以及在导入过程中python进行了加锁操作,最终导致在模块b未导入完成时就引用了其中的名字。
判断导入错误是否是因为循环导入引起的,主要看堆栈中是否出现两次重复的导入。比如上述堆栈中a.py出现两次,因此可以判断是这个文件引起的循环导入。
要解决这个问题,可以把模块看成一种资源,对所有要引入的模块进行编号,再按静态资源排序法顺次导入,就可以避免循环导入。

④ python导入同一目录下的自定义模块,出现MoleNotFoundError

在当前目录下新建一个名字为 __init__.py的文件就可以,内容可以为空

阅读全文

与python导入模块报错相关的资料

热点内容
做外包程序员怎么样 浏览:865
程序员技术门槛 浏览:473
路由花生壳搭建web服务器地址 浏览:541
小米传送文件用什么app 浏览:102
哪个领域算法好 浏览:380
用命令行编译java 浏览:677
笔趣阁app哪个是正版手机app 浏览:427
程序员这个工作好吗 浏览:898
agps定位服务器地址 浏览:659
用水做的解压玩具怎么做 浏览:418
安卓411能下载什么 浏览:304
小海龟logo命令 浏览:493
java制作界面 浏览:895
台达plc编程电缆制作 浏览:249
30多岁当程序员 浏览:442
怎样把表格转换成pdf 浏览:514
行列式分解算法 浏览:291
mscoreedll是什么文件夹修复 浏览:697
什么app测脸型 浏览:43
cf手游刀战算法 浏览:318