导入python函数给出ModuleNotFoundError [重复]
Posted
技术标签:
【中文标题】导入python函数给出ModuleNotFoundError [重复]【英文标题】:Importing python function gives ModuleNotFoundError [duplicate] 【发布时间】:2020-05-08 04:33:53 【问题描述】:求救!
我创建了一个函数并尝试将其导入另一个 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
如果有人能强调我做错了什么以及我如何巧妙地进行导入,我将不胜感激。谢谢!
【问题讨论】:
是的。我在我的项目目录中运行它作为 python test/test_file.py 这能回答你的问题吗? Importing files from different folder 【参考方案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()
【讨论】:
【参考方案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
【讨论】:
谢谢。这有帮助!以上是关于导入python函数给出ModuleNotFoundError [重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 printf() 在 python 中给出一个奇怪的输出?
Python Sklearn.Model_Selection 给出错误无法导入梳子
在标准输入上使用相对导入的Python 3脚本给出错误:没有名为'__main__.XXX'的模块; '__main__'不是包