从另一个目录运行Python脚本

时间:2017-02-24 14:12:44

标签: python python-3.x

首先,想象一下以下文件结构:

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

2 个答案:

答案 0 :(得分:0)

您的问题似乎是module1.pymodule2.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)

module2 module1 位于同一名称空间下。 所以它必须是:

# module1.py
import module2

module2.func_module2()

from package1 import module2仅在以下上下文/命名空间中有效:

enter image description here

例:

# test.py
from package1 import module2

module2.func_module2()