Python虚拟环境-Miniconda的部署和使用

前言

Miniconda 和 Pipenv 是两种用于管理 Python 环境和依赖的工具,但它们的功能和使用场景有所不同。

主要看有没有切换Python虚拟环境版本的需求,如果有则使用Miniconda。

没有的化可以使用Pipenv或者Python内置的venv

以下是它们的主要区别:

Miniconda

  1. 环境管理

    • Miniconda 是一个轻量级的 Anaconda 分发版,主要用于创建和管理独立的 Python 环境。
    • 它可以使用 conda 命令来安装、更新和删除包,同时管理不同版本的 Python 和其他库。
  2. 包管理

    • Miniconda 使用 conda 包管理器,支持从 Conda 仓库安装软件包,能够处理二进制包的依赖关系。
    • 可以安装非 Python 软件包(如 R、Ruby 等)。
  3. 适用场景

    • 适合需要同时管理多个编程语言或需要大量科学计算包的用户。
    • 适合在复杂项目中管理依赖以确保环境的可重现性。

Pipenv

  1. 环境管理

    • Pipenv 是为了简化 Python 项目中的依赖管理而设计的工具,它结合了 pipvirtualenv 的功能。
    • Pipenv 自动创建和管理虚拟环境,为每个项目提供独立的环境。
  2. 包管理

    • Pipenv 使用 Pipfile 来管理项目的依赖关系,依赖的版本会被记录在 Pipfile.lock 中,确保环境的一致性。
    • 仅支持 Python 包的管理。
  3. 适用场景

    • 更适合单个 Python 项目的依赖管理,特别是对于普通的 Web 应用和小型项目。
    • 旨在提高开发者的工作流效率,使得包管理过程更加直观。

总结

  • Miniconda 适合需要管理多种环境和不同语言包的用户,功能更强大,但相对复杂。
  • Pipenv 则更专注于 Python 项目的简单管理,适合日常开发使用。

安装Miniconda

Windows

https://www.anaconda.com/download/success

Windows上安装后先添加环境变量

1
2
3
D:\Tools\miniconda3
D:\Tools\miniconda3\Scripts
D:\Tools\miniconda3\Library\bin

测试

1
conda --version

Linux

查看服务器架构

1
uname -m

https://docs.anaconda.com/miniconda/

Miniconda3 Linux 64-bit:适用于常规的x86_64架构的Linux系统。这是最常见的PC和服务器使用的架构。
Miniconda3 Linux-aarch64 64-bit:适用于ARM架构的64位Linux系统。这种架构通常用于某些服务器、嵌入式系统和移动设备(如Raspberry Pi 4等)。
Miniconda3 Linux-s390x 64-bit::适用于IBM的s390x架构的Linux系统。这种架构主要用于IBM的Z系列大型机。

如下

服务器 地址 SHA256 hash
Linux Miniconda3 Linux 64-bit 33442cd3813df33dcbb4a932b938ee95398be98344dff4c30f7e757cd2110e4f
Miniconda3 Linux-aarch64 64-bit bdace1e233cda30ce37105de627e646ae8e04b036373eacfcd7fa8e35949f1b7
Miniconda3 Linux-s390x 64-bit 5a454c59314f63a0b860e2ed27d68f4a2516c77a7beda919fc11d3cd03c6b2d2

我这里是x86架构

1
2
3
4
5
6
7
8
# 下载 Miniconda 安装脚本
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 运行 Miniconda 安装脚本
bash Miniconda3-latest-Linux-x86_64.sh

# 初次安装需要激活 base 环境
source ~/.bashrc

image-20240929094757114

同一协议后会让选择安装位置

这里根据个人情况输入,我这里数据目录都在data,所以输入

1
/data/miniconda3

接下来显示

You can undo this by running conda init --reverse $SHELL? [yes|no]

这一步的功能是撤销 Conda 初始化带来的更改。这里我不想让 Conda 自动修改你的 shell 环境,所以选择yes来执行这一步。

初始化设置

设置镜像

这种方式是永久生效的

中科大的源

1
2
3
4
5
6
conda config --remove-key channels
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple

查看

1
conda config --show

在输出中,你应该能够看到类似以下的内容:

1
2
3
4
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- defaults

设置虚拟环境位置

1
conda config --add envs_dirs "D:\Tools\MinicondaEnvs"

你可以通过以下命令来验证配置是否已经成功应用:

1
conda config --show

在输出中,你应该能够看到类似以下的内容:

1
2
envs_dirs:
- D:\Tools\MinicondaEnvs

切换32位

当前主流的系统为64bit系统,Miniconda软件为64bit软件,因此使用Miniconda创建虚拟环境安装python时默认安装的python为64bit版本,但部分研发场景需要调用32bit依赖,只能使用32bit的python,因此需要安装32bit的python。

查询环境位数

1
conda info

系统默认的平台配置为win-64,即64bit

切换

CMD下

1
2
3
4
5
6
7
# 切换64bit平台配置为32bit
set CONDA_FORCE_32BIT=1

# 切换32bit平台配置为64bit
set CONDA_FORCE_32BIT=0

# 注:该命令在powershell终端下执行无效

PowerShell下

1
2
3
4
5
6
7
# 切换64bit平台配置为32bit
$Env:CONDA_FORCE_32BIT=1

# 切换32bit平台配置为64bit
$Env:CONDA_FORCE_32BIT=0

# 注:该命令在cmd终端下执行无效

平台切换成功后,重新执行conda info,可以看到platform参数切换为win-32,即32bit,此时创建虚拟环境的Python也会是32位。

注意

这种方式切换位数是临时生效的。

创建虚拟环境

创建一个名为 xh-marking-client-qt 的新虚拟环境,并指定 Python 版本为 3.10

1
conda create -n xh-marking-client-qt python=3.8.2 -y

激活 xh-marking-client-qt 虚拟环境

1
conda activate xh-marking-client-qt

查看版本

1
python -V

退出虚拟环境到base环境中

1
conda deactivate

查看所有的环境

1
conda env list

删除某个环境

1
conda remove --name xh-marking-client-qt --all

环境复制

导出当前环境的配置

1
conda env export > environment.yml

快速重建相同的环境

1
conda env create -f environment.yml

多环境运行

测试脚本

pyversion.py

1
2
3
4
5
6
7
import sys

# 获取 Python 版本
python_version = sys.version

# 输出 Python 版本
print("当前 Python 版本是:", python_version)

前台运行

每个终端会话都可以激活其独立的环境,这样你可以在每个会话中运行不同环境中的应用。

1
2
3
4
5
6
7
# 在第一个终端中
conda activate env1
python script1.py # 运行 env1 中的脚本

# 在第二个终端中
conda activate env2
python script2.py # 运行 env2 中的脚本

后台运行

也可以后台启动应用在对应的环境里

1
nohup bash -c "source activate xh-marking-client-qt && python pyversion.py" &

或者

使用 conda run 命令,以便直接在指定环境中运行你的脚本,而不需要事先激活环境:

1
nohup conda run -n xh-marking-client-qt python pyversion.py &

查看后台进程

1
jobs