我的项目具有以下结构:
.
└── mylib
├── __init__.py
├── fun1.py
├── fun2.py
└── test.py
假设test.py
从模块fun1.py
和fun2.py
导入函数,因此它包含
from fun1 import funA
from fun2 import funB
但是,当我尝试在项目目录外导入test.py
时,出现以下错误:
ModuleNotFoundError: No module named 'fun1'
我可以通过在导入中指定fun1.py
和fun2.py
的整个路径来解决这个问题。你知道吗
from mylib.fun1 import funA
from mylib.fun2 import funB
但同样,假设我不必只导入funA()
和funB
,我有一大堆除test.py
之外的模块,它们也从彼此导入函数。因此,为每个导入指定路径将花费大量时间(像这样进行的导入超过200个)。你知道吗
除了为所有导入指定整个路径之外,还有没有更干净的方法来进行这些导入?你知道吗
我试着在我的__init__.py
上进行这些导入,但是由于我的经验不足,我仍然无法使它工作。你知道吗
def funA():
return True
from fun1 import funA
def funB():
return True
from fun1 import funA
from fun2 import funB
根据我的理解,您正在尝试导入位于其他项目位置的模块。尝试此操作,并将path替换为要从中导入模块的位置。你知道吗
如果我误解了你的问题,请告诉我。你知道吗
如果我理解正确,您希望在mylib之外有一个
首先,在mylib中似乎到处都需要相对导入。第二,您需要使用您的uuu init\uuuuy.py从本地目录导入所有内容,并使其在上面的目录中可用。我将更改(最少)您的文件如下,添加更多的文件来测试导入。你知道吗
目录结构:
风趣2.py
__初始值
你知道吗测试.py你知道吗
你知道吗脚本a.py你知道吗
你知道吗脚本b.py你知道吗
脚本_测试.py你知道吗
现在可以根据需要使用脚本A、脚本B或脚本U测试。当您在每个目录级别继续使用
.
的相对导入时,此模式扩展到更深层的目录结构。你知道吗您需要在需要的地方导入模块/函数。python没有神奇的方法知道您已经导入了一些东西。导入所需的模块/函数(https://docs.python.org/3/reference/import.html)有不同的方法,但我发现最有用的方法是导入模块,然后稍后使用带点语法的模块名来调用函数,例如:
只是一个例子。但你可以看到一个大致的想法。(
from . import func1
将从当前目录/模块导入func1)相关问题 更多 >
编程相关推荐