关于用远程云端环境在本地编译器跑代码时出现 ModuleNotFoundError: No module named ‘***‘ 的问题(云端环境明明有这个包却还报错)

目录

注意

问题描述:

问题原因 

解决办法


注意

这个问题是有前提条件的,如题目中注明,云端环境明明有这个包却还报错。如果没有这个前提条件。只是简单的报错,直接 pip install *** 就行。

问题描述:

我想执行一下模型的训练过程,其启动程序定义在脚本文件 train.py 中。在远程服务器已经配置好了环境,而且在远程服务器的终端执行 train.py 时

python tracking/train.py --script artrack --config artrack_256_full --save_dir ./output --mode single 

没有什么问题。我想在本地的编译器中debug一下,将上面传入的参数在pycharm中,对train.py中进行了配置

运行后就出现了题目中的错误。

ModuleNotFoundError: No module named '***'

 此时在 终端的环境中 pip list 一下,发现没什么问题,存在这个包,而且在终端运行一切正常,并没有报错,哎,什么情况?

问题原因 

在train.py 脚本文件中,发现 

    if args.mode == "single":
        train_cmd = "python /root/data/zjx/Code-subject/ARTrack/ARTrack-main/lib/train/run_training.py --script %s --config %s --save_dir %s --use_lmdb %d " \
                    "--script_prv %s --config_prv %s --distill %d --script_teacher %s --config_teacher %s --use_wandb %d"\
                    % (args.script, args.config, args.save_dir, args.use_lmdb, args.script_prv, args.config_prv,
                       args.distill, args.script_teacher, args.config_teacher, args.use_wandb)


# 
os.system(train_cmd)

这里利用 os.system 来执行 run_train.py 脚本命令,这就出现了问题。在远程服务器终端执行 train.py 时,os.system 所在的服务器环境是云端的环境,而在本地编译器执行 train.py时, os.system会在本地的环境下创建子进程。所以由于 train.py 脚本中使用了 os.system 这一函数,导致这之后的 代码是在 本地的环境 下执行的。这就造成了矛盾,使得远程和本低发生冲突,除了题目中的问题外,还会发生其它问题,远程的一些模块会被冻结或者禁止访问。

在远程服务器终端查看一下环境中的包

# pip listPackage                  Version
------------------------ --------------------
astor                    0.8.1
certifi                  2023.11.17
cffi                     1.16.0
charset-normalizer       3.3.2
click                    8.1.7
configparser             5.2.0
contourpy                1.2.0
cycler                   0.12.1
Cython                   3.0.7
data    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

匿名的魔术师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值