从不同目录执行 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
我试图了解如何将属于同一项目的 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