python3.7.10 如何正确的创建虚拟环境 venv

使用python 创建虚拟环境
创建虚拟环境出错一例 returned non-zero exit status 1

$ python3 -m venv vvv

报错内容如下

Error: Command ‘[’/home/*****/learning_log_env/bin/python’, ‘-Im’, ‘ensurepip’, ‘–upgrade’, ‘–default-pip’]’ returned non-zero exit status 1

使用命令行:

$ python3 -m venv --without-pip --system-site-packages vvv

建立项目就ok了。添加的这行命令的意思是允许虚拟环境使用系统安装的python包。
创建没有pip的虚拟环境,然后启动虚拟环境安装pip即可。但是经过实测,不安装pip也可使用pip命令。

参考文档
https://blog.csdn.net/ldq_sd/article/details/104004464

重点来了, 经过测试, 上面的方法创建的环境, 是有问题的.

执行 pip 安装会出现安装的包不在虚拟目录下. 也就是说安装到了全局环境.
那么怎么办呢? 经过仔细分析, 猜测应该是在执行 命令的时候出错了. 那么把命令复制出来, 执行以下看看返回结果不就更清楚了么…

执行后的反馈结果如下.
在这里插入图片描述

额!!! 竟然是在虚拟环境下运行的这个命令.

$ python3 -m venv vvv

估计退出环境就可以正常使用了吧.
再次执行仍然报错

firefly@firefly:~/Desktop/AI_py3.7_rk1.6.1$ /home/firefly/Desktop/AI_py3.7_rk1.6.1/vvv/bin/python3 -Im ensurepip --upgrade --default-pip
/home/firefly/Desktop/AI_py3.7_rk1.6.1/vvv/bin/python3: No module named ensurepip

这次报的错误不一样了, 是 No module named ensurepip
百度了一下应该是pip的问题, 所以利用python自带的命令 执行一下升级

$ python3.7 -m pip install -U --force-reinstall pip

结果没用, 试试下面这个. 这个是用脚本安装的, 注意

$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3.7 get-pip.py    # 运行安装脚本, 这里的python最好带上版本

还是不行.

sudo python -m easy_install --upgrade pip
sudo python -m easy_install --upgrade pyOpenSSL

提示安装pip都是成功的, 可是运行的时候却提示 No module named ensurepip
在这里插入图片描述
折腾了一大圈, 最后决定回过头来自信思考一下这是为啥.
我感觉应该是环境问题. 在执行安装pip的时候有一段警告, 大意是用root用户执行安装pip,会导致系统不太稳定. 建议在虚拟环境下使用pip… 所以根据这句话, 我猜测, pip应该是在虚拟环境下再安装才是正确的. 于是我删掉了之前的那些虚拟环境数据. 重新开始创建新的虚拟环境

最终正确的整个过程如下

为了方便显示和观看我特意将输出注释掉了.

//创建无pip的虚拟环境,进去再装pip. 
root:~/Desktop/ai2$  python3.7 -m venv --without-pip vvv   

//激活虚拟环境
root:~/Desktop/ai2$ source vvv/bin/activate 

//看看python指向哪里,有没有指错
(vvv) root:~/Desktop/ai2$ which python  
# /home/firefly/Desktop/ai2/vvv/bin/python
(vvv) root:~/Desktop/ai2$ python -V
# Python 3.7.10 

//开始安装pip 
(vvv) root:~/Desktop/ai2$ wget https://bootstrap.pypa.io/get-pip.py
(vvv) root:~/Desktop/ai2$ python get-pip.py
# Collecting pip
#   Using cached pip-21.1.3-py3-none-any.whl (1.5 MB)
# Collecting setuptools
#   Using cached setuptools-57.0.0-py3-none-any.whl (821 kB)
# Collecting wheel
#   Using cached wheel-0.36.2-py2.py3-none-any.whl (35 kB)
# Installing collected packages: wheel, setuptools, pip
# Successfully installed pip-21.1.3 setuptools-57.0.0 wheel-0.36.2
// 看看指向虚拟目录下的pip才是正确的.
(vvv) root:~/Desktop/ai2$ which pip  
# /home/firefly/Desktop/ai2/vvv/bin/pip
(vvv) root:~/Desktop/ai2$ pip -V
# pip 21.1.3 from /home/firefly/Desktop/ai2/vvv/lib/python3.7/site-packages/pip (python 3.7)
(vvv) root:~/Desktop/ai2$ pip install Cython
# Collecting Cython
#   Using cached Cython-0.29.23-py2.py3-none-any.whl (978 kB)
# Installing collected packages: Cython
# Successfully installed Cython-0.29.23
//查看一下是否只有少量几个包和Cython,  如下则说明安装正确并且pip的安装也是正常的.
(vvv) root:~/Desktop/ai2/vvv/lib$ pip list
# Package    Version
# ---------- -------
# Cython     0.29.23
# pip        21.1.3
# setuptools 57.0.0  

总结一下 这个原因是因为 我的系统下有好几个版本的python 也有好几个版本的pip.
版本之间混乱了. 所以为了能够不混乱 建议使用 下面的命令 创建 一个无pip的虚拟环境,

$ python3.7 -m venv --without-pip vvv    

然后再虚拟环境里安装pip.即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值