无法从packag导入python模块

2024-05-20 00:39:44 发布

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

我的项目路径如下:

main.py
modules/
     __init__.py
     databaseManager.py
     sync.py
     excel.py

在主.py地址:

from modules.databaseManger import addExcelToDb, searchInDbAll
from modules.excel import search, showExcelDirContents
from modules.sync import syncExcelAndDB

例如在数据库.py地址:

from modules.excel import showExcelDirContents
from modules.sync import insertExcelNameToSyncDb

但当我跑的时候主.py我得到这个错误:

Traceback (most recent call last):
 File "main.py", line 6, in <module>
   from modules.databaseManger import searchIn
ImportError: cannot import name 'searchInDbAll'

在尝试将函数从modules目录中的每个文件导入到其他文件时也会出错。你知道吗

我需要一些import的例子。你知道吗


Tags: 文件项目frompyimport路径modulesmain
2条回答

这是循环导入问题。你知道吗

说明:

首先触发databaseManager模块的导入。你知道吗

在此期间,databaseManager代码开始导入excel。你知道吗

excel导入期间,excel代码尝试从databaseManager检索函数searchInDbAll()。但此时这个函数并不存在,因为databaseManager正在导入excel,他还没有开始定义任何函数。你知道吗

如何修复:

在存在循环导入冲突的模块中,导入模块而不是函数。例如,更改以下内容:

from modules.excel import showExcelDirContents

对此:

from modules import excel

当然,然后必须将相应的函数调用从showExcelDirContents()更改为excel.showExcelDirContents()。你知道吗

必须在databaseMangerexcelsync模块中执行此操作。有了这个补丁,我就可以运行你的代码了。你知道吗

是的,去掉附件搜索路径,这是错误的

您可以在路径中附加模块,如下所示:

import sys
sys.path.append('modules/')

或者

import sys
sys.path.append('c:/mycode/stuff/modules/')

注意这些是正斜杠,也可以使用双反斜杠,如\ \

那就吃你的吧数据库管理器.py文件输入/模块

您还需要在/modules文件夹中有一个名为:

__init__.py

只是一个空文件

那么你应该能够做到:

from databaseManger import addExcelToDb, searchInDbAll

相关问题 更多 >