我知道如何导入包或模块,但遇到了一个非常奇怪的问题。你知道吗
如果我运行swmm5_extend_function/example.py
,一切都很好。但是,当我运行example.py
时,会出现错误:
Traceback (most recent call last):
File "example.py", line 2, in <module>
from swmm5_extend_function.Swmm5Extend import SWMM5ReadInp
File "C:\project\swmm5_extend_function\Swmm5Extend.py", line 1, in <module>
import swig.SWMM5ReadInpFile as swmm
ModuleNotFoundError: No module named 'swig'
以下是我的项目结构:
project/
-- example.py
-- ......
-- swmm5_extend_function/
-- __init__.py
-- example.py
-- Swmm5Extend.py
-- swig/
-- __init__.py
-- SWMM5ReadInpFile.py
-- ....
下面是每个.py文件的代码:
swmm5\扩展\功能/swmm5扩展.py你知道吗
import swig.SWMM5ReadInpFile as swmm
class SWMM5ReadInp(object):
pass
swmm5\扩展\功能/示例.py你知道吗
from Swmm5Extend import SWMM5ReadInp
你知道吗示例.py你知道吗
from swmm5_extend_function.Swmm5Extend import SWMM5ReadInp
我想知道为什么会发生这种奇怪的错误。你知道吗
为了更好地解释,我创建了以下文件夹结构:
正如您可能注意到的,我们有3个同名文件,每个文件都使用同名函数以不同的语言表示问候。
greeter.py
文件中唯一的函数是:从同一文件夹导入
如果从
test.py
文件导入greeter
并运行says
函数,我们将有:输出:
从子文件夹导入 但是如果我们想从子文件夹导入呢?
要从子文件夹(即
deepfolder/
)导入,只需在文件夹中添加一个空的__init__.py
文件,然后就可以在导入中指定路径:输出:
从父文件夹导入 最后,您可能需要从父文件夹导入。
您应该尝试让
main
运行的文件位于文件夹树的顶部,但是发生了一些事情,您发现自己正在从父文件夹导入模块。为此,需要将父文件夹添加到搜索路径地址:
输出:
导入脚本和模块并不是解决问题的最佳方式,您可能想看看Python's documentation about packages。你知道吗
TL;DR
在
project/example.py
中使用而不是
相关问题 更多 >
编程相关推荐