使用python 2.7从并行目录导入

时间:2015-07-06 14:30:34

标签: python python-2.7 python-import python-unittest

我最近开始研究一个项目,并负责实现一些新功能以及这些功能的单元测试。我一直在尝试将模块导入到单元测试文件中,但是当我运行它时,我遇到了一个ImportError:当我尝试导入test_algorithms.py时没有名为Developing.algorithms的模块

我尝试用两种方式导入

from Developing import algorithms as algo

import Developing.algorithms as algo

我的结构类似于我所做的测试项目:

Testing/
    __init__.py
    Developing/
        __init__.py
        algorithms.py
    Master (Stable)/
    Tests/
        __init__.py
        test_algorithms.py

我遇到了:

ImportError: No module named Developing.algorithms

或者当我将导入更改为:来自开发导入算法

ImportError: No module named Developing

我已经阅读了很多类似的问题,并且从我学到的那些问题中将 init .py文件包含到每个包含我要导入的文件的目录中。我目前根据PyCharm没有任何错误但是当我从终端运行它时遇到导入错误。我也不想修改system / python路径,因为我读到使用该项目的每个人都必须这样。那么如何在不改变路径的情况下从并行目录导入呢?

1 个答案:

答案 0 :(得分:2)

您需要将目录Testing添加到PYTHONPATH env变量中,才能直接导入Developing.algorithms(或Testing以上的目录,以便能够导入Testing.Developing.algorithms)。

在Windows中,您可以将PYTHONPATH变量设置为 -

set PYTHONPATH=\path\to\Testing\;%PYTHONPATH%

在Bash中,您可以尝试 -

export PYTHONPATH=/path/to/testing/:$PYTHONPATH

以编程方式(从python),您可以在尝试导入Developing.algorithms之前执行以下操作 -

import sys
sys.path.append('/path/to/Testing/')
from Developing import algorithms # or how ever you want to import.

此外,您无需执行上述所有操作,无论是设置PYTHONPATH env变量还是使用sys.path