无法从Python同一目录中的另一个文件导入类

时间:2018-08-26 20:14:50

标签: python python-2.7 oop singleton

我对Python还是很陌生,但我仍然很习惯。我有一个项目,该项目是使用一堆仅包含函数定义的文件编写的。我决定在OOP范例中重新制作它,这就是发生的情况:

那时,我有两个文件:

Main
 | ---- loggingManager.py
 | ---- servoManager.py

在我拥有的ServoManager.py脚本中:

from loggingManager import *
...
from time import sleep

,一切正常。我可以使用loggingManager.py中的所有 def 功能,而不会出现任何问题。

现在我是这样的:

Main
 | ---- Logger.py
 | ---- ConfigurationWrapper.py

ConfigurationWrapper的内容是:

import configparser

class ConfigurationWrapper:
    default_path = '/home/pi/Desktop/Bree/config.ini'

    def __init__(self, path_to_file=None):
        if path_to_file is None:
            path_to_file = self.default_path
...

和Logger看起来像这样:

class Singleton(type):
    _instances = {}
    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwarg$
        else:
            cls._instances[cls].__init__(*args, **kwargs)

        return cls._instances[cls]

class Logger():
    __metaclass__ = Singleton

我的目标是导入:

import ConfigurationWrapper

在Logger.py脚本文件中,但是每次执行此操作时,都会出现错误(通过在MacOS的终端中键入“ python Logger”):

Traceback (most recent call last):
  File "Logger", line 1, in <module>
    import ConfigurationWrapper
ImportError: No module named ConfigurationWrapper

我试图在同一文件夹中添加空的__init __.py文件,但仍然没有任何反应。

2 个答案:

答案 0 :(得分:0)

尝试在导入的模块之前添加点(。)

import .ConfigurationWrapper

或导入您的课程

from .ConfigurationWrapper import ConfigurationWrapper

点(。)表示您正在从同一目录导入。

答案 1 :(得分:0)

我解决的方法是添加:

$regNum

但是我想知道那是多么合适。