python 导入自定义包 找不到模块 No module named 解决办法
·
当前运行脚本从自己写的包my_package 中导入了模块A,但是模块A所依赖的模块B无法自动导入,此时我们要需要在路径文件 my_package\ __init__.py 中,写入以下代码:
import sys # 即添加包名的搜索路径
sys.path.append("my_package")
原因解析:
当前脚本从包中导入模块A时,仅导入了模块A的路径,并没有模块B的路径。python搜索路径找不到B的路径。自然,A的依赖模块B无法导入。类似于pyinstaller打包时的 --hiden-import 。
此时需要在包内的__init__.py文件内添加模块B的路径(在导入包时,__init__.py会自动运行),由于有包的路径,python解释器就可以搜索包下的模块,自然模块B也能被导入了。
以上属于个人的猜测理解,有误之处请予指正。
问题举例:
在当前脚本 exam1-1.py 从自己写的包中导入模块 cipher_algprithm.affine_cipher.py (如图1),并从中导入 AffineCipher() 类。其中 affine_cipher.py 需要导入 util_math.py。
但是运行 exam1-1.py 缺显示 No module named 'util_math',即当前运行脚本仅从包中导入了affine_cipher.py,但是无法自动导入 affine_cipher.py 所依赖的模块 util_math.py (如图2,图3)
更多推荐
已为社区贡献1条内容
所有评论(0)