























Python 开发环境管理分为两部分,一个是 Python 版本管理,一个是虚拟环境管理。
很多时候受限于我们的项目依赖,在开发不同的项目时需要用到不同的 Python 版本,例如 TensorFlow 2.10 就只能支持 3.7-3.10 的 Python 版本,但是最新版的 TensorFlow 就支持最新的 Python 3.11. 作者由于同时使用 TensorFlow 和 PyTorch 两个深度学习框架,就在电脑上安装了三个 Python 版本。
如果我们不使用虚拟环境管理的话,我们所有的包都会安装在系统全局 Python (Global Python, 也就是系统默认的 Python 版本) 的目录下,这会导致两个问题:
基于上述两个原因,Python 开发环境管理的最佳实践是为不同的项目建立不同的虚拟环境。为了满足项目依赖对于 Python 版本的要求,我们在建立虚拟环境的时候,就需要指定 Python 版本,具体指定 Python 版本的方法会在下面的不同实践中具体介绍。

利用 Python 自带的 venv 管理虚拟环境有两个主要的问题:
基于上述两个原因,我很快就弃用了 venv。由于作者使用的时间太短,关于 venv 的介绍和详细使用,可以参考少数派站内的两篇文章。
关于 virtualenv,作者在查资料的时候发现二者同源,是 venv 的超集,所以对它也完全没有尝试。
Miniconda 和 Anaconda 都打包了 Conda 这一包管理器,二者的区别在于,Miniconda 里面只包含了 Conda、Python 和一些必备的包,是最小的 Conda 安装环境;而 Anaconda 则提供了很多额外的数据科学或者机器学习的依赖包,例如安装完成之后就可以使用 Python 的IDE Spyder,导致其安装包非常臃肿。
由于 Anaconda 中的很多工具包我们都用不上,所以建议直接 Miniconda,遇到需要的依赖的时候直接安装即可。
由于 Windows 系统没有自带 Python 安装,所以如果直接安装 Miniconda / Anaconda,系统的默认 Python 版本就会是 Miniconda / Anaconda 的 Python 版本。
conda create -n venv_name python=3.11 # 创建虚拟环境并指定 Python 版本
conda activate venv_name # 激活虚拟环境
conda deactivate # 离开虚拟环境由于 Ubuntu/WSL 在 Terminal 里操作非常方便,流程和 Windows 中相同,只是以命令行的形式进行,故而提供完整的命令行参考。
sudo apt update && sudo apt upgrade
sudo apt install wget
wget https://repo.anaconda.com/miniconda/Miniconda3-py311_23.5.2-0-Linux-x86_64.sh # 下载 Miniconda 安装文件
sh ./Miniconda3-py311_23.5.2-0-Linux-x86_64.sh # 安装 Miniconda,需要同意用户协议
conda create -n venv_name python=3.11 # 创建虚拟环境并指定 Python 版本
conda activate venv_name # 激活虚拟环境Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
pyenv --version # 查看 Pyenv 的版本pyenv install -l # 查看可以安装的 Python 列表
pyenv install 3.9.13
pyenv install 3.11.1
pyenv versions # 查看电脑中已安装 Python 版本
pyenv global 3.11.1 # 设置默认版本 Python
pyenv version # 查看默认版本 PythonC:\Users\*****\AppData\Roaming\Python\Python311\Scripts
# 如果不添加到环境变量,使用 Pipenv 时会报此错误
pipenv : 无法将“pipenv”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。pip install pipenvcd project_dir # 切换到项目文件夹
pipenv install --python 'C:\Users\*****\.pyenv\pyenv-win\versions\3.9.13\python39.exe’ # 创建虚拟环境,此时可以指定 Python 版本
pipenv shell # 启动虚拟环境
pipenv install package # 安装需要的包
exit # 离开虚拟环境
这里需要注意的是,虽然创建虚拟环境是在项目文件夹,但是不同项目的虚拟环境都在同一个目录下管理,不像 venv 会在项目文件夹下。
pipenv install package # 安装
pipenv uninstall package # 卸载
pipenv graph # 查看按照包的依赖关系
pipenv --venv # 查看虚拟环境执行文件路径
pipenv --rm # 移除虚拟环境在 Ubuntu/WSL 中使用 Pyenv 和 Pipenv 的流程还是和 Windows 下相同,所以还是提供完整的命令行参考。
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
exec "$SHELL"# Installing libraries that need for installing Python
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
# Installing Python
pyenv install 3.9.13
pyenv install 3.11.1
pyenv versions # 查看电脑中已安装 Python 版本
pyenv global 3.11.1 # 设置默认版本 Python
pyenv version # 查看默认版本 Pythonpip install pipenv # 使用 pip3 安装 pipenv
export PATH="/home/user/.local/bin:$PATH" # 添加路径到 PATH
echo "${PATH//:/$'\n'}" # show path one directory per line cd project_dir
pipenv install --python 3.9 # 不用指定 Python 路径
pipenv shell # 启动虚拟环境
pipenv install package # 安装需要的包
exit # 离开虚拟环境到这里可以总结一下,利用 Miniconda/Anaconda 管理开发环境和利用 Pyenv 和 Pipenv 管理开发环境的一个小小的区别:利用 Miniconda/Anaconda 建立虚拟环境的时候,我们指定的 Python 是在此时安装或者确认的,也就是一步到位;利用 Pipenv 建立虚拟环境的时候,我们是需要在已经安装了指定 Python 版本的基础上指定本地 Python 版本,基于此版本的 Python 来建立的虚拟环境,也就是分两步走。
Using Python Environments in Visual Studio Code
Configure a virtual environment | PyCharm Documentation (jetbrains.com)
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。