如何在不同文件夹中组织的多个模块的项目中在 python 中进行导入?
Posted
技术标签:
【中文标题】如何在不同文件夹中组织的多个模块的项目中在 python 中进行导入?【英文标题】:How to make the imports in python in a project of several modules organised in different folders? 【发布时间】:2022-01-05 15:16:54 【问题描述】:我正在构建一个软件。我在不同的文件夹中组织了不同的python文件(模块)中的不同代码。
它就像一个魅力。然后今天它不再起作用了,因为我有一些问题:
ModuleNotFoundError: No module named 'modules.mymodulesteam'
这就是我的代码的组织方式:
MySoftware/
- start.py
- modules/
-- mymodules.py
-- prepare.py
-- mymodulesteam.py
在 start.py 文件中,我有这个导入:
from modules import prepare_envir_appium
在 prepare.py 我有这行导入
import modules.mymodulesteam as mymodules
当我执行“start.py”时,控制台中出现以下错误消息:
Traceback (most recent call last):
File "E:\MySoftware\modules\prepare.py",
import modules.mymodulesteam as mymodules
ModuleNotFoundError: No module named 'modules.mymodulesteam'
所以我寻求帮助,我发现我必须在我的文件夹“模块”中添加一些 _init.py 文件。我做到了,但没有用。我遇到了完全相同的问题。
我阅读了有关此类问题的每篇文章并尝试了很多东西。
from modules import mymodulesteam
from . import mymodulesteam
etc...
我得到了这种错误:
Traceback (most recent call last):
File "E:\MySoftware\modules\prepare.py",
from modules import mymodulesteam as mymodules
ImportError: cannot import name 'mymodulesteam' from 'modules' (E:\MySoftware\modules\__init__.py)
所以我删除了这个“_ init _.py”文件并再次测试。这次我收到了这个错误:
Traceback (most recent call last):
File "E:\MySoftware\modules\prepare.py",
from modules import mymodulesteam as mymodules
ImportError: cannot import name 'mymodulesteam' from 'modules' (unknown location)
它曾经工作得很好。我不知道发生了什么。有人可以帮我吗?
【问题讨论】:
【参考方案1】:它不起作用,因为模块不在同一路径中,并且脚本不知道在哪里查找。
您当前的start.py
文件如下所示,
from modules import prepare_envir_appium
相反,请在 start.py
文件的顶部执行此操作,因为您的 prepare_envir_appium.py
文件位于模块中。
import sys
sys.path.insert(0,"../modules")
import prepare_envir_appium
现在您可以使用prepare_envir_appium.functionname
访问您的函数。
你也可以这样做,
import sys
sys.path.insert(0,"../modules")
import prepare_envir_appium as per
现在您可以在 start.py 中使用 per.functionname
访问函数。
你也可以像这样导入特定的函数,
import sys
sys.path.insert(0,"../modules")
from prepare_envir_appium import functionname1, functionname2
你可以使用它们的函数名来运行它们。
但是,如果您正在查看 prepare.py
脚本,因为模块与脚本位于同一文件夹中,您所要做的就是导入文件名,如下所示,不带 .py 扩展名。
您可以遵循与上述相同的导入命名约定。
import mymodulesteam
或
import mymodulesteam as mmt
或
from mymodulesteam import function1, function2
【讨论】:
感谢您的帮助。它没有改变任何东西。 另外,“import mymodules”位于子文件夹“modules”中的 prepare.py 文件中 @GauthierButtez 对于与模块在同一文件夹中的脚本,您只需导入不带 .py 的文件名 如果它不起作用,你能告诉我错误吗? @GauthierButtez 我得到同样的错误“ModuleNotFoundError: No module named 'mymodulesteam'”以上是关于如何在不同文件夹中组织的多个模块的项目中在 python 中进行导入?的主要内容,如果未能解决你的问题,请参考以下文章
如何将多个 python 文件组织到一个模块中而不像一个包一样?