很久以前我刚接触Python的时候,因为要运行一个软件,然后那个软件需要依赖某个库,我当时其实已经有那个库了,但是因为比较新,所以那个软件无法使用。然后网上说有几种方法:
- 换台新电脑
- 使用虚拟机,但是很多环境都需要重新配置,不考虑
- 使用docker,当时我用的是这个解决的,但是数据传来传去的不太方便,其他倒是还好。
- 使用Python自带的虚拟环境- virtualenv——一个很好用的第三方包,直接- pip install virtualenv即可。
- venv——- python3自带的一个脚本,但是在ubuntu/debian上需要用- apt install python3-venv安装后才可以使用
 
今天好好运行了一下Python的这个虚拟环境,感觉还挺方便的,期间也遇到了一些错误和如何解决它,在此记录下。
Windows10 Python版本:3.7.3
使用Python3自带的venv创建虚拟环境,结果是:
| 1 | E:\PythonTest>python3 -m venv venv | 
但是如果我安装venv而选择不装pip,完全没有问题:
| 1 | python3 -m venv --without-pip venv | 
这从侧面说明了,问题是出在了虚拟环境安装pip上面。最后翻阅了很多资料,说是因为python3.exe这个命名导致的,只需要把它改成python.exe就行了,我自己亲身试验了一下,还真的修好了233333,所以这是为什么呢。
经过在网上搜索,找到了一个比较满意的答案:

简单来说就是因为你把python.exe改名成了python3.exe,导致了pip的脚本不认识了,所以会有这个问题。还有一个更加优雅的解决方法,py -3 -m venv venv ,用到的Python Launcher for Windows这个技术,实测下来没有问题而且非常优雅。
Ubuntu Python版本:3.7.4
| 1 | python3 -m venv clp | 
可以从错误中看出是因为执行ensurepip这个模块的时候返回的错误信息,那不如我们自己手动执行一下这条命令?
| 1 | python3 -Im ensurepip --upgrade --default-pip 1 ↵ | 
从输出来看应该是缺少一个叫zlib的库,这个问题网上倒是有很详细的解释说明,解决起来还是比较烦人的。
但是在3.7.3,3.6.8和3.5.2这三个版本上面均没有问题。
virtualenv
这个我目前还没遇到问题,是Python的第三方库,用起来跟venv几乎一样(其实应该说venv跟它一样吧23333),所以如果不想解决venv的问题的话,推荐使用它。