我最近开始研究一个项目,并负责实现一些新功能以及这些功能的单元测试。我一直在尝试将模块导入到单元测试文件中,但是当我运行它时,我遇到了一个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路径,因为我读到使用该项目的每个人都必须这样。那么如何在不改变路径的情况下从并行目录导入呢?
答案 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
。