使用Python3原生和conda创建虚拟环境,隔离项目依赖。


1 使用Python3原生创建虚拟环境

1.1 Linux编译安装特定版本的python

首先检查编译环境,此处以Fedora为例:

1
2
gcc --version  # 检查gcc编译器
sudo yum -y install wget zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libpcap-devel xz-devel libffi-devel libffi-dev  # 检查&安装必要工具包

获取python3源码,此处以python3.9.5为例:

  1. 官网地址:https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
  2. 淘宝镜像:https://npm.taobao.org/mirrors/python/3.9.5/Python-3.9.5.tgz
1
wget https://npm.taobao.org/mirrors/python/3.9.5/Python-3.9.5.tgz

解压编译python3:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 解压
tar -zxvf Python-3.9.5.tgz

# 进入解压后目录
cd Python-3.9.5

# 创建放置编译好的python的目录
sudo mkdir /opt/Python3.9.5

# 准备编译
./configure --prefix=/opt/Python3.9.5

# 编译源码
sudo make && sudo make install

检查已编译的python环境

1
whereis python3

典型的输出如下:

1
python3: /usr/bin/python3 /usr/bin/python3.9 /usr/lib/python3.9 /usr/lib64/python3.9 /usr/include/python3.9 /opt/Python3.9.5/bin/python3.9 /opt/Python3.9.5/bin/python3.9-config /opt/Python3.9.5/bin/python3 /usr/share/man/man1/python3.1.gz

创建符号链接到系统可执行文件目录(可选,便于快速启用python环境):

1
2
3
4
# python3.9.5
sudo ln -s /opt/Python3.9.5/bin/python3 /usr/bin/python395
# pip(也可以先使用whereis pip定位)
sudo ln -s /opt/Python3.9.5/bin/pip3.9 /usr/bin/pip395

注意:如果需要替换系统的默认python3环境,建议执行先备份再创建符号链接:

1
2
3
4
5
sudo mv /usr/bin/python3 /usr/bin/python3_bak
sudo ln -s /opt/Python3.9.5/bin/python3 /usr/bin/python3

sudo mv /usr/bin/pip /usr/bin/pip_bak
sudo ln -s /opt/Python3.9.5/bin/pip3.9 /usr/bin/pip

更改pip源为国内方法:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 清华大学源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 阿里源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/

# 腾讯源
pip config set global.index-url http://mirrors.cloud.tencent.com/pypi/simple

# 使用默认源
pip config unset global.index-url

1.2 创建虚拟环境

Python3的官方文档中,已经给出了创建虚拟环境最简单的方式,一行命令即可:

1
python3 -m venv ${path}

注意:在ubuntu上,在创建虚拟环境前,还需要安装必备软件包:sudo apt-get install python3-venv

不过上述方式的弊端在于,只能创建与python3环境版本一致的虚拟环境(比如使用python3.8.8只能创建python3.8虚拟环境,而不能创建python3.7或者python2等版本的虚拟环境)。解决方案是:使用conda工具

2 使用conda创建虚拟环境

鉴于Anaconda较为厚重,且部分功能需要收费使用,此处使用更为轻巧的miniconda,在Fedora上演示如何快速创建虚拟环境。

2.1 下载miniconda

miniconda页面,下载对应的安装包安装即可。或者使用下面命令直接下载64位python3.9版本的miniconda:

1
wget https://repo.anaconda.com/miniconda/Miniconda3-py39_4.9.2-Linux-x86_64.sh

2.2 安装conda

首先给予安装包可执行权限:

1
sudo chmod +x Miniconda3-py39_4.9.2-Linux-x86_64.sh

然后按照官方指引,在交互式命令中安装即可:

1
./Miniconda3-py39_4.9.2-Linux-x86_64.sh

安装完成后,终端前面(base) [lzwang@localhost ~]$ 会有前缀base,代表当前使用的是默认的conda环境,检测方式如下:

1
2
3
4
(base) [lzwang@localhost ~]$ python -V
Python 3.9.1
(base) [lzwang@localhost ~]$ pip -V
pip 20.3.1 from /home/lzwang/miniconda3/lib/python3.9/site-packages/pip (python 3.9)

可以看到当前的python和pip已经指向了conda的安装位置。

2.3 配置conda源

1
vim ~/.condarc

推荐使用以下两个源加速国内访问速度。

(1) 清华大学conda源:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

(2) 上海交大conda源:https://mirrors.sjtug.sjtu.edu.cn/docs/anaconda

1
2
3
4
5
6
7
8
default_channels:
  - https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/r
  - https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main
custom_channels:
  conda-forge: https://mirrors.sjtug.sjtu.edu.cn/anaconda/cloud/
  pytorch: https://mirrors.sjtug.sjtu.edu.cn/anaconda/cloud/
channels:
  - defaults

2.4 conda常用命令

(1) 查看conda信息:

1
conda info

(2) 更新conda环境:

1
conda update conda

(3) 创建python版本x.y.z(如3.8.5,2.7.2)的虚拟环境:

1
conda creat -n ${your_venv_name} python=x.y.z

(4) 激活虚拟环境:

1
conda activate ${your_venv_name}

(5) 反激活虚拟环境:

1
conda deactivate

(6) 为特定的conda虚拟环境安装pip包:

1
conda install gitpython -n ${your_venv_name} -y  # 缺省-n的话,默认为当前环境

(7) 查看conda已安装的包:

1
conda list -n ${your_venv_name}  # 缺省-n的话,默认为当前环境

(8) 移除虚拟环境:

1
conda remove -n ${your_venv_name}

(9) 从系统中移除miniconda: 假定miniconda位置在~/miniconda3(默认位置)

1
rm -rf ~/miniconda3

3 使用Pycharm IDE创建python虚拟环境

此处以macOS为例,Linux和Windows与之类似

3.1 新建项目时,创建虚拟环境

如下图,选择新Virtualenv环境即可(建议使用conda): pycharm_venv_1

pycharm_venv_2

3.2 为当前项目创建虚拟环境

设置 –> 项目 –> Python解释器 –> 全部显示 –> 新建虚拟环境即可; pycharm_venv_3

pycharm_venv_4

参考资料

  1. Python官网:https://www.python.org/
  2. Python环境淘宝镜像源:https://npm.taobao.org/mirrors/python/
  3. Python创建虚拟环境官方文档:https://docs.python.org/zh-cn/3/library/venv.html
  4. Miniconda官网及使用说明:https://docs.conda.io/en/latest/miniconda.html
  5. Pip清华大学源:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
  6. Pip腾讯源:https://mirrors.cloud.tencent.com/help/pypi.html
  7. Conda清华大学源:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
  8. Conda上海交大源:https://mirrors.sjtug.sjtu.edu.cn/docs/anaconda