关于python的搜索路径

时常遇到下面这种错误,其中  'ssim_module' 是模型自带的 py 文件。

ModuleNotFoundError: No module named 'ssim_module'

可以参考下面的链接打印当前 python 的搜索路径:

import sys
print(sys.path)

运行 IGD 下的 py 文件时,打印的路径为:

可以看到在 E:\python\clone\IGD>  的路径下,python 的搜索路径除了基础路径,只会增加一条 'e:\\python\\clone\\IGD' ,因此在运行命令的时候要以 IGD 为基点,在编写文件夹内部文件的时候,也要注意 import 的引用层次。

例如本示例中的,运行代码

python -m p32.ssim_main --num 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 --sample_rate 1.0

无法找到跟自己同一个文件夹的 py 文件,需要加上前缀 p32 才能找到,因为搜索路径只到 IGD。

有些同学遇到搜索路径的问题会使用直接拷贝 py 文件的方法,不到万不得已不推荐直接拷贝文件的方式解决。 

还有一种方式:添加搜索路径

 通过在python文件中添加以下代码,可将当前工作目录添加至python搜索路径。

import os
import sys
sys.path.insert(0, os.path.abspath('.'))

20240724更新:

又遇到类似问题:文件夹关系是,文件夹pass中有文件夹src,文件夹src中有d.py和c.py,其中d.py中有代码 from src.c import *,运行报错 no module named src

某智能软件给出答案是:

尝试了第1种方法,使用方法1,from .Config import Config 结果 ImportError: attempted relative import with no known parent package

它的答案仅供参考,目前有效的办法是,去掉from XX,直接import d,其中d.py中只定义了一个class d。这可能跟py文件本身的结构有关,还有init.py等。

总的来说,from 后面的第一个名字,应该是当前 运行路径 运行路径 运行路径 后的第一个文件或文件夹名称。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值