如何将一个模块导入另一个模块
How to import a module into another module
这是我项目的结构:
project (folder)
main.py
assets (folder)
a.py
b.py
当我将模块 a 导入模块 b 和 运行 main.py 时,我得到 No module named 'a'
.
然而,如果我直接 运行 b.py,它导入 a.py 就好了。
a 和 b 在同一目录中,所以我缺少什么? FWIW,我正在使用 Python 3.10.
main.py:
import assets.b as bb
a.py:
def func(x):
print(x)
b.py:
import a
a.func('hello')
更新您的 b.py
如下
from . import a
a.func('hello')
或
from assets import a
a.func('hello')
在第一种情况下,我们告诉解释器检查与文件相同的位置。在第二种情况下,我们只是使用完整路径。使用 python 3.10.1 和 3.6
测试
如果您使用的是文件夹结构,最好始终根据您的 main.py
固定执行路径和相对路径。暗示 运行 python3.10 b.py
来自 assets
是不可接受的。
以防万一,您希望功能从 assets
文件夹执行 python3.10 b.py
以及 python3.10 main.py
然后更新代码如下。
try:
from . import a
except:
import a
a.func('hello')
如果您坚持 IDE,例如 PyCharm,那么此类错误很容易发现和修复。
这是我项目的结构:
project (folder)
main.py
assets (folder)
a.py
b.py
当我将模块 a 导入模块 b 和 运行 main.py 时,我得到 No module named 'a'
.
然而,如果我直接 运行 b.py,它导入 a.py 就好了。
a 和 b 在同一目录中,所以我缺少什么? FWIW,我正在使用 Python 3.10.
main.py:
import assets.b as bb
a.py:
def func(x):
print(x)
b.py:
import a
a.func('hello')
更新您的 b.py
如下
from . import a
a.func('hello')
或
from assets import a
a.func('hello')
在第一种情况下,我们告诉解释器检查与文件相同的位置。在第二种情况下,我们只是使用完整路径。使用 python 3.10.1 和 3.6
测试如果您使用的是文件夹结构,最好始终根据您的 main.py
固定执行路径和相对路径。暗示 运行 python3.10 b.py
来自 assets
是不可接受的。
以防万一,您希望功能从 assets
文件夹执行 python3.10 b.py
以及 python3.10 main.py
然后更新代码如下。
try:
from . import a
except:
import a
a.func('hello')
如果您坚持 IDE,例如 PyCharm,那么此类错误很容易发现和修复。