Python3.8虚拟环境无法从unittest导入test模块的问题求助
问题根因
- Python标准库
unittest的test子模块是CPython官方用来测试unittest框架本身的内部非公开组件,不属于对外提供的公共API,默认不会被打包到常规的Python发行版中。 - 你创建virtualenv时使用了默认参数
global=False,虚拟环境会隔离系统全局的Python包,就算系统环境中存在该模块,虚拟环境也无法访问。
解决方案
若确实需要使用unittest的内部test模块
- 方案一:重新创建支持继承系统包的虚拟环境
# 删除旧的虚拟环境 rm -rf test2 # 新建带系统包继承的虚拟环境 virtualenv --system-site-packages test2 source test2/bin/activate
- 方案二:给现有虚拟环境安装对应依赖
Debian/Ubuntu系操作系统执行以下命令:
# 先激活你的虚拟环境 source test2/bin/activate # 安装系统级Python测试组件 sudo apt install -y python3-testresources # 安装unittest的test模块包 pip install unittest-test
安装完成后即可正常执行from unittest import test导入操作。
若为开发场景误用
如果你是要编写自己的单元测试用例,不需要导入该内部模块,直接使用unittest的公共API即可,标准写法参考:
import unittest class TestYourFunc(unittest.TestCase): def test_add(self): self.assertEqual(2+3, 5) if __name__ == "__main__": unittest.main()
如果你是要导入自己项目下的test模块,不需要从unittest下导入,将项目根目录加入Python路径后直接导入即可:
import sys # 替换为你自己的项目根目录绝对路径 sys.path.append("/home/xxx/your_project") import test
内容的提问来源于stack exchange,提问作者begletsoid
相关产品推荐
相关产品推荐

