导入python函数给出ModuleNotFoundError

时间:2020-01-22 04:18:28

标签: python python-3.x python-import

SOS!

我创建了一个函数,并尝试将其导入另一个python脚本中以进行一些单元测试。但是,我不断收到“ ModuleNotFoundError”。如何将函数从一个脚本正确导入到另一个脚本。

现有:

from src.somefile import some_function

def test_somefunction:
    assert somefunction()

错误

Traceback (most recent call last):
  File "test/test_file.py", line 2, in <module>
    from src.somefile import convert_epoch
ModuleNotFoundError: No module named 'src'

文件夹结构

project/
project/__init__.py
project/src
project/src/__init__.py
project/src/somefile.py
project/test
project/test/__init__.py
project/test/test_file.py

赞赏有人可以突出我做错了什么以及如何整齐地导入。谢谢!

2 个答案:

答案 0 :(得分:2)

如果要导入类似的模块,则必须将包含模块的目录添加到PYTHONPATH环境变量中,或者可以使用sys.path

import sys
# assumed that /home/you/work contains `project` dir
sys.path.append('/home/you/work')
# now you can import

您也可以使用相对导入(import ..package),但是它们有一些限制(可以提高到某个点),通常来说是一种不好的做法。看一下这篇文章,它详细描述了python的import语句:https://chrisyeh96.github.io/2017/08/08/definitive-guide-python-imports.html

答案 1 :(得分:1)

希望这会为您工作,假设您正在运行这样的脚本
python test/test_file.py

import sys
sys.path.append("..") # Adds higher directory to python modules path.

from src.somefile import some_function

def test_somefunction:
    assert somefunction()