Anaconda下unittest导入snowflake.connector报ModuleNotFoundError
问题产生原因
核心报错是ModuleNotFoundError: No module named 'snowflake.connector',触发原因基本都是包安装问题:
- 你跑测试用的
envnameconda环境里,没装对Snowflake的Python连接包。注意Snowflake官方连接器的包名是snowflake-connector-python,不是snowflake-connector,装错包名肯定导不进来;另外很多人装包的时候没激活对应环境,直接全局pip install,包装到base环境去了,切到envname自然找不到。 - 极小概率是
conda run没指定当前工作目录,导致Python模块搜索路径不对,但你这个案例里wtf目录下的代码能被正常加载,只有snowflake导入失败,这个原因可以直接排除。
修复方法
按以下步骤操作即可解决:
- 先激活目标conda环境,避免后续装包错位:
conda activate envname - 清理可能存在的错误安装包,避免版本/包名冲突:
pip uninstall -y snowflake-connector snowflake.connector conda remove -y snowflake-connector-python -n envname
- 安装适配Python 3.9.2版本的官方连接器,优先用conda-forge源安装,自动处理依赖冲突:
conda install -c conda-forge snowflake-connector-python==2.7.12 -n envname
如果习惯用pip安装,确保已经激活envname环境后执行:pip install snowflake-connector-python==2.7.12
指定2.7.12版本是因为该版本经过验证完全兼容Python 3.9.2,不会出现高版本不兼容低版本Python的问题 - 先验证包导入是否正常,在激活的环境中执行:
python -c "import snowflake.connector; print('导入验证通过')"
没有报错的话,回到同时包含wtf和test文件夹的项目根目录执行测试即可:python -m unittest
如果需要用非交互式的conda run执行命令,记得加上工作目录参数,避免路径识别异常:conda run -n envname --cwd . python -m unittest
内容的提问来源于stack exchange,提问作者Sam Helmich
相关产品推荐
相关产品推荐

