首先,想象一下以下文件结构:
project-dir
|_
package1
|_
__init__.py
module1.py
module2.py
以下脚本内容:
module2.py:
def func_module2():
print('func_module2 run')
module1.py:
from package1 import module2
module2.func_module2()
以下命令在从project-dir执行时会产生错误:
python package1/module1.py
错误:
Traceback (most recent call last):
File "./package1/module1.py", line 1, in <module>
from package1 import module2
ImportError: No module named 'package1'
为什么会发生这种情况?如何从另一个目录运行Python脚本?
Python 3.5.2
答案 0 :(得分:0)
您的问题似乎是module1.py
和module2.py
都存在于同一个包中。从module1.py
开始,您在另一个套餐中找不到module2.py
。而是尝试:
import module2
module2.func_module()
尝试我得到:
> python package1/module1.py
func_module2 run
但是如果你想让它作为一个包工作(或使用更新版本的python),你必须使用
from . import module2
module2.func_module()
但是这会使python package1/module1.py
无效,因为它不会作为包的一部分运行。相反,你可以使用
> python -m package1.module1
func_module2 run
答案 1 :(得分:0)