从python中的不同路径导入模块类:“NameError:未定义名称‘enpy’”

2024-09-28 10:13:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个exmple.py脚本,它试图从位于__main__.py中的模块从不同的目录构建对象,如下所示:

├─ /enpy
│  ├─ __init__.py
│  └─ __main__.py
│
└─/tests
   ├─ /filetest
   │  └─ train.json
   │
   └─ example.py

main.py有一个名为Enpy的类,它是这样开始的,有很多不同的函数:

MAIN.PY

# 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中的类。所以现在在示例中.py我有

示例.PY

import sys
sys.path.insert(1, '../enpy')

from enpy import *

# TESTING 

# 1. Creating Enpy Object
enpyObj = enpy.Enpy('./filetest/train.json')

当我尝试运行我的example.py时,我遇到了错误,我将本地库导入文件夹/enpy

enpyObj = enpy.Enpy('./filetest/train.json')

NameError: name 'enpy' is not defined

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


Tags: pyimportselfjsoninitmainexampletrain
1条回答
网友
1楼 · 发布于 2024-09-28 10:13:43

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

from importlib.machinery import SourceFileLoader

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

相关问题 更多 >

    热门问题