Loading

python import的路径问题

一、问题概述

image
我想在measure.py中import utils.py中的函数。
在measure.py中添加如下代码:

from utils import *

在Pycharm中运行是可以的,但是在服务器上运行是报错的。

二、解决方法

在measure.py中添加如下代码:

import sys
print(sys.path)

然后分别在Pycharm和服务器上运行。
Pycharm输出:

['/home/ruipeng/Desktop/zrp_project/GCPR/new_measure',
'/home/ruipeng/Desktop/zrp_project/GCPR',

'/home/ruipeng/pycharm-2021.1.1/plugins/python/helpers/pycharm_display', '/home/ruipeng/anaconda3/envs/activity2vec/lib/python37.zip',
'/home/ruipeng/anaconda3/envs/activity2vec/lib/python3.7',
'/home/ruipeng/anaconda3/envs/activity2vec/lib/python3.7/lib-dynload', '/home/ruipeng/anaconda3/envs/activity2vec/lib/python3.7/site-packages', 
'/media/ruipeng/1.42.6-24922/HAKE-Action-Torch/AlphaPose', 
'/media/ruipeng/1.42.6-24922/HAKE-Action-Torch',
'/home/ruipeng/anaconda3/envs/activity2vec/lib/python3.7/site-packages/pycocotools-2.0-py3.7-linux-x86_64.egg', '/home/ruipeng/anaconda3/envs/activity2vec/lib/python3.7/site-packages/torchlight-1.0-py3.7.egg', 
'/home/ruipeng/pycharm-2021.1.1/plugins/python/helpers/pycharm_matplotlib_backend']

服务器上输出:

['/home/ruipeng/Project/GCPR/new_measure',

'/home/ruipeng/anaconda3/envs/human/lib/python37.zip',
'/home/ruipeng/anaconda3/envs/human/lib/python3.7',
'/home/ruipeng/anaconda3/envs/human/lib/python3.7/lib-dynload',
'/home/ruipeng/anaconda3/envs/human/lib/python3.7/site-packages']

可见,出现上述差异的原因是,Pycharm会默认将项目的根目录添加到sys.path!
所以往往在pycharm下运行没有问题,但部署项目时,用命令行运行文件却报错。
可以print(sys.path)分别看一下pycharm下和命令行运行。

因此,解决方法是:
在measure.py中的import前添加以下代码:

sys.path.append("/home/ruipeng/Project/GCPR")   # 服务器上的路径
print(sys.path)

运行后,服务器上的输出变为:

['/home/ruipeng/Project/GCPR/new_measure',
'/home/ruipeng/Project/GCPR',

'/home/ruipeng/anaconda3/envs/human/lib/python37.zip',
'/home/ruipeng/anaconda3/envs/human/lib/python3.7',
'/home/ruipeng/anaconda3/envs/human/lib/python3.7/lib-dynload',
'/home/ruipeng/anaconda3/envs/human/lib/python3.7/site-packages']

这样的话,在服务器上用命令行运行便不会报错了。

posted @ 2022-06-06 14:53  少年人永远倔强  阅读(969)  评论(0编辑  收藏  举报