如何将一个模块导入另一个模块

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,那么此类错误很容易发现和修复。