python - 从python中的不同路径导入模块类:“NameError:名称'enpy'未定义”
问题描述
我有一个exmple.py
脚本,它试图从位于__main__.py
不同目录的模块构建对象,如下所示:
├─ /enpy
│ ├─ __init__.py
│ └─ __main__.py
│
└─/tests
├─ /filetest
│ └─ train.json
│
└─ example.py
main.py有一个名为 Enpy的类,它的开头是这样的,并且有很多不同的功能:
主文件
# Dependancies
import json
import csv
class Enpy:
# Global Variables
dataset = None
# initialize class
def __init__(self, file):
self.readDataset(file)
# Functions
def readDataset(self, file):
with open(file) as f:
self.dataset = json.load(f)
然后我不确定导入库 enpy 并使用 main.py 中的类。所以现在在example.py中我有
示例.PY
import sys
sys.path.insert(1, '../enpy')
from enpy import *
# TESTING
# 1. Creating Enpy Object
enpyObj = enpy.Enpy('./filetest/train.json')
当我尝试运行我在文件夹./enpy中导入本地库的example.py时出现错误
enpyObj = enpy.Enpy('./filetest/train.json')
NameError:名称“enpy”未定义
我知道关于这个问题有很多问题,但是关于导入类不是很清楚。谢谢!
解决方案
enpy
您可以使用绝对路径导入。因此,您可以使用SourceFileLoader
从绝对路径导入:
from importlib.machinery import SourceFileLoader
enpy = SourceFileLoader("module.name", "/path/to/enpy/__init__.py").load_module()
enpyObj = enpy.Enpy('./filetest/train.json')