python从不同的目录结构导入模块

时间:2015-11-18 11:25:04

标签: python import module directory importerror

     common/src/validation/file1.py

在common / src / validation /和common / src /文件夹中" _init _ "是定义。

     common/test/validation/file2.py
     common/test/validation/case/file3.py

在file2.py和file3.py中,我想从file1.py导入类。

我在file2.py和file3.py。中提供以下行:

      from file1 import class1  

我目前收到错误:

      #ImportError: No module named file1

sys.path.append应该是什么?

2 个答案:

答案 0 :(得分:0)

你基本上只需将PYTHONPATH改为common并从那里开始运行。然后引用与之相关的所有导入路径。

喜欢这样:(假设你是共同的,你的主要是在file3.py)

PYTHONPATH=. python test/validation/case/file3.py

确保您导入的任何目录中都有__init__.py个文件(此文件的内容并不重要)

我通常喜欢在每个项目的根目录中放入一个run.sh文件,其中包含该行的某个版本(指向我的主函数所在的任何位置)。

它通常包含类似的简单内容:

#!/bin/bash
source some_env/bin/activate # start the relevant environment if you have one
PYTHONPATH=. python src/main.py # set PYTHONPATH and run
deactivate # exit the relevant environment if started one

另一种选择是做this,但不是那么优雅。

答案 1 :(得分:0)

如果要从文件夹导入文件,则应该有一个名为

的文件
__init__.py 

在该文件夹中(它也可能是一个空白文件)。