在Python 3中出现ModuleNotFoundError,但在Python 2中没有
我有一个项目,我想在不同的机器上运行,而不需要修改在Python 3中出现ModuleNotFoundError,但在Python 2中没有,python,python-3.x,python-import,importerror,Python,Python 3.x,Python Import,Importerror,我有一个项目,我想在不同的机器上运行,而不需要修改PYTHONPATHenvironment变量。我的项目结构如下: awesome_project/ data/ scripts/ __init__.py predict/ importer/ __init__.py __init__.py predict.py train/ importer/ __init__.py __
PYTHONPATH
environment变量。我的项目结构如下:
awesome_project/
data/
scripts/
__init__.py
predict/
importer/
__init__.py
__init__.py
predict.py
train/
importer/
__init__.py
__init__.py
train.py
utils/
__init__.py
configuration.py
在我的预测和训练代码中,我需要导入UTIL中配置文件中定义的变量。在Python2中,我定义了导入器
模块,其中初始化
具有以下代码:
import sys
from os import getcwd
from os.path import sep
root_path = sep.join(getcwd().split(sep)[:-2])
sys.path.append(root_path)
这是一种魅力。我从scripts.utils.configuration import models\u path导入变量为:,但现在我正在将代码迁移到Python 3,这根本不起作用,我得到以下错误:
Traceback (most recent call last):
File "predict.py", line 11, in <module>
from scripts.utils.configuration import models_path
ModuleNotFoundError: No module named 'scripts.utils'
回溯(最近一次呼叫最后一次):
文件“predict.py”,第11行,在
从scripts.utils.configuration导入模型\u路径
ModuleNotFoundError:没有名为“scripts.utils”的模块
我做错了什么?在违规提交之前的sys.path中有什么?@Goyo它是一个向量,如下所示:[,'/home/ubuntu/carlos/permit\u classification']
最后一个是我想添加的模块,它应该在哪里查找模块脚本,所以awesome\u项目实际上是/home/ubuntu/carlos/permit\u classification
,你想导入的模块是/home/ubuntu/carlos/permit\u classification/scripts/utils/configuration.py
?@Goyo正确,我注意到评论后出现了差异。您可以只导入脚本吗?可能还有另一个模块/包在跟踪你的。在违规提交之前,sys.path
中有什么内容?@Goyo它是一个向量,如下所示:[,'/home/ubuntu/carlos/permit\u classification']
最后一个是我想添加的模块,它应该在哪里查找模块脚本,所以awesome\u项目实际上是/home/ubuntu/carlos/permit\u classification
,你想导入的模块是/home/ubuntu/carlos/permit\u classification/scripts/utils/configuration.py
?@Goyo正确,我注意到评论后出现了差异。您可以只导入脚本吗?可能有另一个模块/包在跟踪您的模块/包。