使用 python 2.7 从并行目录导入

Importing from parallel directories with python 2.7

我最近开始从事一个项目,任务是实现一些新功能以及对这些功能进行单元测试。我一直在尝试将模块导入单元测试文件,但是当我 运行 它时,我遇到了 ImportError: No module named Developing.algorithms 当我尝试导入 test_algorithms.py

我都尝试过导入

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,我目前没有任何错误,但是当我从终端 运行 它时,我 运行 进入那个导入错误。我也不想修改系统 / python 路径,因为我读到每个使用该项目的人都必须这样做。那么如何在不更改路径的情况下从并行目录导入?

您需要将目录 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 .