本文总结了一些小白在使用Anaconda/venv虚拟环境部署项目时的常见坑,遇到了此类问题的读者可以对照排错,节约时间。

*本文并不致力于介绍Anaconda / venv,也不会详尽罗列其特性、从而比较其优劣;只是在有必要的时候简单提及相关特性,

准备

1.首先要确认项目的依赖项:有哪些包,每个包的最低要求版本。

2.Anaconda 或 venv:这里需要注意的问题,conda安装的包版本往往比pip低,很多包conda安装不了,conda和pip兼容性不是很好。这里给出的建议是对于非机器学习/深度学习项目,或者一些小项目推荐使用Python3自带的venv创建虚拟环境;使用Anaconda前要确认conda资源列表满足项目依赖项;在Anaconda环境下优先使用conda工具下载依赖项。

3.如果项目需要安装python3,可电脑里已经安装了python2,此时,在Win平台下,即使Python3比Python2优先级高(比如两者都配置了环境变量,Python3在用户组,Python2在系统组),输入"python"时还是会指向python2,单独复制出一个"python3"的链接可以解决问题。

问题集

症状:pip install xx -> WindowsError: [Error 145] The directory is not empty.

原因:pip在清理临时精简时因为被其他程序占用而失败。

排错:关掉占用窗口,杀毒软件,以及不知道有什么用途的后台程序。

症状: pip install xx -> error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools"

排错:直接安装最新VC编译工具,推荐使用Win平台下的包管理工具Chocolatey下载。

症状:pip install xx; ipython; import xx -> ModuleNotFoundError: No module named xx

原因:xx这个包是在python3环境里安装的,但ipython是python2下面的。

排错:Python3环境下面同样要安装ipython。

症状:python3 -m venv xx -> [WinError 2] The system cannot find the file specified

排错:重新安装python3。

症状:使用pip安装了各个依赖项的最新版本,即便某个依赖项和其它依赖项不存在兼容问题,它还是会报错。

可能原因:新发布的版本里面有未及时修复的bug。

排错:可以退回到最低要求版本(同样,前提是不会引发兼容性问题),或者该版本对应系列下面最后一个修复版本。