当前位置:   article > 正文

python从文件初始化失败怎么办_无法从子文件夹中的“初始化”导入

python初始化失败

这是我的文件夹结构:storage/

__init__.py - contains class StorageAbstract, class DummyStorage, class STORE_TYPE

file.py - contains class FileStorage

db/

__init__.py - contains class DbStorage, class DbStorageAbstract

pg.py - contains class PgStorage

sqlite.py - contains class SQLiteStorage

类PgStorage和SQLiteStorage继承自DbStorageAbstract,因此我需要导入它。我是这样做的py.页以及sqlite.py)公司名称:

^{pr2}$

这就产生了以下错误:ImportError: cannot import name 'DbStorageAbstract'

但是,当我将DbStorageAbstract从存储/db/\uu init_upy中移动时。到storage/\uyu init_upy并按如下方式导入:from .. import DbStorageAbstract

那就好了。我已经阅读了this,this和许多其他资源,但是仍然不能找出是什么导致了这个问题。如果这是循环依赖,那么把类移到另一个文件中对我来说没有帮助。在

如果需要更多信息,请在评论中告诉我,我会编辑问题。在

我使用的是python3.5

编辑:

虽然这个问题被认为是this question的可能重复,但我不明白它如何回答我的问题。与另一个问题不同,我已经在每个文件夹中有init文件。如果我错了,请指出我能找到答案的地方。在

编辑2:

这是db/init.py文件:##################################################################

# Copyright 2018 Open Source Geospatial Foundation and others #

# licensed under MIT, Please consult LICENSE.txt for details #

##################################################################

#import sys

#sys.path.append("/mnt/c/Users/Jan/Documents/GitHub/pywps")

import logging

from abc import ABCMeta, abstractmethod

from pywps import configuration as config

from .. import StorageAbstract

from . import sqlite

from . import pg

LOGGER = logging.getLogger('PYWPS')

class DbStorageAbstract(StorageAbstract):

"""Database storage abstract class

"""

__metaclass__ = ABCMeta

@abstractmethod

def store(self, output):

pass

@abstractmethod

def store_output(self, file_name, identifier):

pass

class DbStorage(StorageAbstract):

def __init__(self):

self.storage = self.get_db_type()

def store(self, output):

assert(self.storage is not None)

self.storage.store(output)

def get_db_type(self):

# get db_type from configuration

try:

db_type = config.get_config_value('db', 'db_type')

except KeyError:

raise exception("Database type has not been specified")

# create an instance of the appropriate class

if db_type == "PG":

storage = pg.PgStorage()

elif db_type == "SQLITE":

storage = sqlite.SQLiteStorage()

else:

raise exception("Unknown database type: '{}'".format(db_type))

return storage

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/468669
推荐阅读
相关标签
  

闽ICP备14008679号