从不同目录执行 python 文件

Execute a python file from different directory

我试图了解如何将属于同一项目的 python 文件拆分到不同的目录中。如果我理解正确,我需要使用描述的包 here in the documentation

所以我的结构是这样的:

.
├── A
│   ├── fileA.py
│   └── __init__.py
├── B
│   ├── fileB.py
│   └── __init__.py
└── __init__.py

有空 __init__.py 个文件和

$ cat A/fileA.py 
def funA():
    print("hello from A")

$ cat B/fileB.py 
from A.fileA import funA

if __name__ == "__main__":
    funA()

现在我希望当我执行 B/fileB.py 时得到 "Hello from A",但我得到以下错误:

ModuleNotFoundError: No module named 'A'

我做错了什么?

解决此问题的一种方法是通过添加

将模块 A 添加到 fileB.py 的路径中
import sys
sys.path.insert(0, 'absolute/path/to/A/')

到 fileB.py 的顶部。

您的问题与:Relative imports for the billionth time

相同

TL;DR: you can't do relative imports from the file you execute since main module is not a part of a package.

作为主要对象:

python B/fileB.py

输出:

Traceback (most recent call last):
  File "p2/m2.py", line 1, in <module>
    from p1.m1 import funA
ImportError: No module named p1.m1

作为模块(不是主模块):

python -m B.fileB

输出:

hello from A