在ubuntu16.04中安装pyenv和pipenv

因为最近在做安全帽检测的项目,下载的yolov4源码使用的python3.6,但是实验室服务器上的python是3.5,因为某些原因不能更新实验室的python3.5,所以打算pyenv和pipenv创建一个python3.6的虚拟环境。我的想法是通过pyenv管理多个版本的Python,然后在自己的项目中,设置该项目的python环境为3.7(主环境是3.5,但是我需要3.7);使用pipenv创建3.7的虚拟环境(因为如果要使用python3.7,就必须下载python3.7)

系统:ubuntu 16.04

python版本:python3.5

第一部分:安装pyenv

1 pyenv

pyenv可以在多个python版本之间进行转换。它允许你的ubuntu系统中存在多个python,使用pyenv可以在多个python版本之间轻松地进行转换。转换有两层意思:

(1)使用pyenv改变当前系统的python版本:比如,目前ubuntu的python版本是python3.5,你可以在下载python3.6之后,将系统的python版本由3.5转换成3.6。

(2)使用pyenv可以控制某个项目的python版本。比如,目前ubuntu中多个项目需要使用不同的python版本,有的项目使用python3.5,有的项目使用python3.6,你可以使用pyenv为每个单独的项目创建其合适的python版本,而且每个项目之间的python环境是相互独立的。

2 安装

项目源码:https://github.com/pyenv/pyenv

(1)下载pyenv源码

在这里,我们从github中直接下载pyenv源码,我们讲源码保存在~/.pyenv隐藏目录下,你可以使用ctrl+h找到这个文件。

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

(2)定义一个PYENV_ROOT环境变量,让其指向pyenv repo的下载地址,并且在你的$PATH中添加$PYENV_ROOT/bin,让pyenv获得命令行的使用权。

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc

(3)向你的shell中添加pyenv init

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc

注意:如果在使用pyenv的过程中,出现了死循环,你你需要讲~/.bashrc修改维~/.bash_profile

(4)重启shell,让修改之后的路径生效

exec "$SHELL"

(5)安装相关依赖

sudo apt-get update; sudo apt-get install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

安装相关依赖之后,你可以检查一下自己的pyenv是否安装了。

# (1) 检查pyenv的安装路径
which pyenv

# /home/lupeng/.pyenv/bin/pyenv

# (2) 检查pyenv的shim目录
echo $PATH | grep --color=auto "$(pyenv root)/shims"

#/home/lupeng/.pyenv/shims:/home/lupeng/.pyenv/bin:/opt/ros/kinetic/bin:/home/lupen#g/bin:/home/lupeng/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/s#bin:/bin:/usr/games:/usr/local/games:/snap/bin

(6)安装你需要的python及其对应的版本(假设我要安装python3.7.7)

pyenv install 3.7.7
pyenv rehash

 (7) 如果下载python的网速太慢,可以参考下面的方式:

参考了这位老哥的博客


# 如果你要下自己需要的版本,请修改。
# 可以先去http://mirrors.sohu.com/python看看有没有自己要的版本
export PYTHON_BUILD_MIRROR_URL="http://mirrors.sohu.com/python/2.7.12/"

pyenv install 3.7.7

3 卸载

如果你需要pyenv了,你可以卸载

rm -rf ~/.pyenv

4 切换Python版本

在这一部分,借鉴了这位老哥的博客

(1)改变整个系统的python版本(改变全局的python版本)

慎用!慎用!慎用!

重要的事情说三遍,因为可能会有意想不到的事情发生

# (1) 将整个系统的python版本改变成python3.7.7
pyenv global 3.7.7

# (2)检查一下pyenv的python版本
pyenv versions

# * system (set by /home/lupeng/.pyenv/version)
#  3.7.7


# (3) 使用python查看当前的python版本
python3

# Python 3.7.7 (default, Jun  2 2020, 15:09:34) 

(2)切换某个项目的python版本(改变局部的版本)

# (1) 切换到某个目录下面
cd something/

# (2)切换到你需要的python版本
pyenv local 3.5.2


# (3) 检查一下
pyenv versions

#   system
#* 3.5.2 (set by /home/lupeng/something/.python-version)
#  3.7.7
# 我们可以看到,pyenv一共下载了两个版本,*表示当前的版本

 

第二部分:安装pipenv

1 pipenv 

pipenv可以创建多个虚拟环境,虚拟环境之间和真实的python环境都是分别独立的。这样做有一个好处,每个项目之间依赖的模块和环境都是独立的,不会相互影响。比如在一个服务器中,多个人使用的模块是不同的,如果要将整项目封装成一个exe文件,显然会封装一些多余的模块,这显然会增加exe文件的大小。

 

2 安装

(1)安装python和pip(如果安装过了,请跳过;如果没有安装,请搜索相关博客下载安装python和pip)

  • 你可以使用下面两行代码看看自己是否下载了python和pip
# (1) 查看python版本,如果报错说明你没有安装python
python3 --version

# (2) 查看pip版本,如果报错说明没有安装pip
pip3 --version

下载pip只需要下面两行代码就行(相关链接

# (1) 
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

# (2) 
python get-pip.py

(2)安装pipenv

sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pipenv

 

 3 创建虚拟环境

# (1) 创建一个项目工程(如果有,就忽略这一步)
mkdir myproject

# (2) 进入到项目工程路径中
cd myproject

# (3) 创建你需要的python版本
pipenv --python 3.7.7

# (4) 修改pyenv在这个项目中的python版本
pyenv local 3.7.7

经过第三步之后,你会发现myproject工程项目下中会新增一个Pipfile文件

 

4 安装相关模块

大多数的模块都是国外的,因此下载速度会慢很多,所以在安装模块之前,我们需要修改一下pipenv的镜像源。打开Pipfile文件,将其修改成下面的格式:

[[source]]
 url = "https://pypi.tuna.tsinghua.edu.cn/simple"
 verify_ssl = true
 name = "pypi"

假设需要安装numpy模块

pipenv install numpy

 

5 运行你的py代码

(1)首先进入到虚拟环境中

进入虚拟环境之前:

进入虚拟环境之后

我们发现在前面出现了(myproject),这是虚拟环境的名称

 (2)运行py文件

假设在myproject工程目录下面有一个hello.py的文件,我们想要运行这个py文件,我们可以这样做

# 运行hello.py文件
python hello.py

(3) 退出虚拟环境

如果我们想要退出虚拟环境,我们可以使用exit退出

 

6 安装requirements.txt中的安装包

pipenv install -r requirements.txt

7 卸载pipenv

pip3 uninstall pipenv

8 其他命令

使用pipenv --help可以查看使用,下面我列举了常用的命令:

参考了这位兄弟的博客:

# (1) 启动pipenv shell(用于在终端运行)
pipenv shell

# (2) 退出虚拟环境
exit

# (3) 查看所有的安装包
piplist

# (4) 环境内包的依赖展示
pipenv graph

# (5) 查看虚拟环境路径
pipenv --venv

# (6) 卸载安装包
pipenv uninstall 

 

 

第三部分:将pycharm和pipenv连用

参考了这位老哥的博客

(1)第一种情况:

如果使用pycharm新创建一个项目,在创建项目的时候,选择使用pipenv

然后在设置中选择interpreter,这时候我们就可以选择3.7.7的版本加载Interpreter了

注意:

(1)一定要是Pipenv Environment,而不是Virtualenv Environments,只有通过pipenv安装的模块才可以在pycharm中使用

(2)Base interpreter: /home/lupeng/.pyenv/versions/3.7.7/bin/python

(2)第二种情况:

如果是一个项目是移植过来的(比如从github下载下来的)的项目,我们只需要使用pyenv给这个项目设置一个局部的python环境,然后使用pipenv --python 3.7.7来创建一个虚拟环境就行(python版本视具体情况而定)

配置完环境之后,我们需要给项目文件添加一个interpreter。如下图所示,点击Ok就行。(勾掉 Install packages from Pipfile,这是因为在我添加interpreter的时候,在安装requirements.txt的时候,总是会报错,我索性就先勾掉了)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章