python 导包找不到路径终极解决办法 ModuleNotFoundError: No module named ‘xxx’

解决办法

一句话,给搜索路径,代码在调用路人甲,就把路人甲的父亲路径加入即可,可以采取的办法1是绝对路径:

import os
import sys
sys.path.append("/home/kevin_xie/yifeinfs/pycharm_k/python_test/")

办法2是相对路径+sys的一些方法:

import os
import sys
__dir__ = os.path.dirname(os.path.abspath(__file__))
sys.path.append(__dir__)
sys.path.append(os.path.abspath(os.path.join(__dir__, '../..'))) # to get "/home/kevin_xie/yifeinfs/pycharm_k/python_test/"

详细说明

python提示找不到包怎么办?
比如我有如下的工程,里面有reco1包和reco2包,每个包里面还有sub包。在prfunction.py中有一个pr函数,我想在test1.py中去运行这个函数。
在这里插入图片描述
如果在pythcharm中,你可以这么写,没有问题,能找到包。

from reco1.sub.prfunction import pr
pr()

但你在终端执行,在/home/kevin_xie/yifeinfs/pycharm_k/python_test/reco2/sub2执行是执行不了的:


(py37) [kevin_xie@localhost sub2]$ pwd
/home/kevin_xie/yifeinfs/pycharm_k/python_test/reco2/sub2
(py37) [kevin_xie@localhost sub2]$ python test1.py
Traceback (most recent call last):
  File "test1.py", line 2, in <module>
    from reco1.sub.prfunction import pr
ModuleNotFoundError: No module named 'reco1'

或者你可以去/home/kevin_xie/yifeinfs/pycharm_k/python_test执行,也是不行的:

(py37) [kevin_xie@localhost python_test]$ pwd
/home/kevin_xie/yifeinfs/pycharm_k/python_test
(py37) [kevin_xie@localhost python_test]$ python reco2/sub2/test1.py
Traceback (most recent call last):
  File "reco2/sub2/test1.py", line 2, in <module>
    from reco1.sub.prfunction import pr
ModuleNotFoundError: No module named 'reco1'

推出方法,如果这么写,将想调用的包的父亲路径加入,就能寻找到了。

import os
import sys
__dir__ = os.path.dirname(os.path.abspath(__file__))
sys.path.append(__dir__)
sys.path.append(os.path.abspath(os.path.join(__dir__, '../..'))) # to get "/home/kevin_xie/yifeinfs/pycharm_k/python_test/"


from reco1.sub.prfunction import pr
pr()



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值