Error: Command '['/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.

创建虚拟环境报错

方法一:

1.转载https://www.jianshu.com/p/60c46e982f18
在ubuntu16.04下使用系统自带的python3.5创建虚拟环境一切正常,但当我安装了python3.6后,安装虚拟环境会报错,下面是遇到的报错和解决办法。

当安装完pyhton3.6后,用python3.6创建虚拟环境

~# python3 -m venv myenv

会报如下错误:

Error: Command '['/root/myenv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.

再尝试用virtualenv命令创建虚拟环境,并选择python3.6

~# virtualenv -p python3.6 myenv01

会报如下错误:

Traceback (most recent call last):   File "/usr/lib/python3/dist-packages/virtualenv.py", line 22, in <module>     import zlib ModuleNotFoundError: No module named 'zlib'

此时发现是缺少zlib,所以要安装zlib

sudo apt-get install zlib1g-dev

安装成功后,需要重新安装python3.6,即在官网下载的python3.6目录下执行安装语句:

./configure

make

sudo make install

此时再次创建虚拟环境

~# python3 -m venv myenv

不会报错,成功创建!

方法二(推荐):

症状

​ 使用 venv 创建虚拟环境失败,并报错如上。

python -m venv ll_venv

背景

​ Ubantu16.04

​ 三个python版本: python2.7 、python3.5、python3.6

​ python 默认为 python3.6

解答

​ 缺少依赖包,安装 python3.6-venv 即可。

sudo apt-get install python3.6-venv

解决历程

  1. 首先是到网上查找解决方法,看了两篇,觉得不合适,但也受到了启发,开始自己想办法。

  2. 受到别人的启发,我先用 virtualenv 创建包,能创建成功,而别人的却无法创建,所以我未选择它的答案。

    virtualenv ll_venv
    source ll_venv/bin/activate
    pip list
    
  3. 使用 python3.5 创建虚拟环境,创建失败,输出同样的报错。但是多了解决提示:

    python3.5 -m venv ll_venv
    # 报错,但有提示
    sudo apt-get install python3-venv
    python3.5 -m venv ll_venv
    python -m venv ll_venv
    # 仍然报错,内容未变
    

    于是按提示,安装了 python3-venv。再次使用 python3.5 创建虚拟环境成功,但是python3.6仍然报错不变。

  4. 猜想:python3.5 安装个 python3-venv 就行了,python3.6 是不是要安装 python3.6-venv?试试...

sudo apt-get install python3.6-venv
# 安装成功
python -m venv ll_venv

成功安装 python3.6-venv !用 python3.6 创建虚拟环境也成功了。

思考

​ 应该是每个 python3 版本都有各自的 venv,python3-venv 默认安装的应该是 python3.5-venv,但系统的 python3 默认为 python3.6。那只能解释为 python3-venv 由远程解释,并解释为 系统已安装的python3 的最低版本。故要在有多个python3版本的系统中指定python3版本的 venv,最好手动指定python3版本来安装。

posted @ 2021-09-07 07:28  流水自净  阅读(7935)  评论(0编辑  收藏  举报