Python3 即使在使用 __init__.py 后仍出现包导入错误
Python3 package import error even after using __init__.py
我有以下结构:-
Test
├── package1
│ └── script1.py
│ └── __init__.py
├── package2
└── script2.py
└── __init__.py
我想从 script2.py 导入 script1.py 并尝试过:-
from package1.script1 import *
我是 运行 来自 linux 终端的脚本 python3 script2.py 但这似乎不起作用,我得到 ModuleNotFoundError: No module named 'package1'.我该如何解决这个问题?
你在哪个目录?
为了让python识别package1,
1 ) 您必须通过终端转到 package1 的目录,
cd {package1directory}
或
2 ) 您必须将系统路径附加到 package1 的目录,如下所示
import sys
sys.path.append('/home/user/package1dir')
3 ) 将 PYTHONPATH 定义为系统变量。表示package1目录
理想情况下,您应该 运行 来自顶级包的 python 脚本(导入 and/or 运行 启动整个应用程序的代码)如下所示:
Test
├── package1
│ └── script1.py
│ └── __init__.py
├── package2
| └── script2.py
| └── __init__.py
|___ run.py
然后运行python3 run.py
当您导入 from package1.script1 import *
时,您是在告诉 Python 从主脚本 运行 的路径搜索包。因此,它假定您正在从 package2
中搜索 package1
。如果将 package1
放在 package2
和 运行 python3 script2.py
中,它也会起作用。
Test
├── package2
├── package1
│ └── script1.py
│ └── __init__.py
└── script2.py
└── __init__.py
如果您仍想从具有相同目录结构的 script2 运行,那么您必须在 Test
目录和 运行 python3 package2/script2.py
中或修改python path.
我有以下结构:-
Test
├── package1
│ └── script1.py
│ └── __init__.py
├── package2
└── script2.py
└── __init__.py
我想从 script2.py 导入 script1.py 并尝试过:-
from package1.script1 import *
我是 运行 来自 linux 终端的脚本 python3 script2.py 但这似乎不起作用,我得到 ModuleNotFoundError: No module named 'package1'.我该如何解决这个问题?
你在哪个目录?
为了让python识别package1,
1 ) 您必须通过终端转到 package1 的目录,
cd {package1directory}
或
2 ) 您必须将系统路径附加到 package1 的目录,如下所示
import sys
sys.path.append('/home/user/package1dir')
3 ) 将 PYTHONPATH 定义为系统变量。表示package1目录
理想情况下,您应该 运行 来自顶级包的 python 脚本(导入 and/or 运行 启动整个应用程序的代码)如下所示:
Test
├── package1
│ └── script1.py
│ └── __init__.py
├── package2
| └── script2.py
| └── __init__.py
|___ run.py
然后运行python3 run.py
当您导入 from package1.script1 import *
时,您是在告诉 Python 从主脚本 运行 的路径搜索包。因此,它假定您正在从 package2
中搜索 package1
。如果将 package1
放在 package2
和 运行 python3 script2.py
中,它也会起作用。
Test
├── package2
├── package1
│ └── script1.py
│ └── __init__.py
└── script2.py
└── __init__.py
如果您仍想从具有相同目录结构的 script2 运行,那么您必须在 Test
目录和 运行 python3 package2/script2.py
中或修改python path.