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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值