首页 > 解决方案 > 从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”未定义

我知道关于这个问题有很多问题,但是关于导入类不是很清楚。谢谢!

标签: pythonpython-3.xobjectpip

解决方案


enpy您可以使用绝对路径导入。因此,您可以使用SourceFileLoader从绝对路径导入:

from importlib.machinery import SourceFileLoader

enpy = SourceFileLoader("module.name", "/path/to/enpy/__init__.py").load_module()
enpyObj = enpy.Enpy('./filetest/train.json')

推荐阅读