Skip to content

Python 创建虚拟环境

约 864 字大约 3 分钟

Python

2025-01-16

Python项目中,虚拟环境是一种隔离不同项目依赖的方式,每个项目都可以有自己的虚拟环境,这样就可以避免不同项目之间的依赖冲突。

创建Python虚拟环境的工具有很多,各有优缺点,如:

工具/方法特点
venv内置模块,轻量高效,Python 3.11 创建速度更快。
virtualenv更灵活的虚拟环境工具,支持更多自定义选项。
pyenv版本管理神器,适配多版本快速切换。
conda适合数据科学和依赖复杂项目,可轻松切换 Python 版本。
pip + pyproject.toml现代化依赖管理,与 Python 3.11 生态完美融合。
PDM新工具,支持无虚拟环境模式,开发体验更佳。
Docker容器化管理,适合生产环境和隔离复杂项目。

目前就使用过pyenvvenvvenv内置是特点,但是是先有对应Python版本的情况下,才能创建虚拟环境,本身不能做Python的版本管理。pyenv是可以管理Python的版本的,可以随意切换需要使用的Python,创建虚拟环境也挺方便的。

我们也可以把pyenvvenv结合起来,比如我之前使用pyenv的时候,下过几个版本的Python,在使用venv创建虚拟环境的时候,我们可以用pyenv下载的某个Python版本来创建,这样虚拟环境就使用的是指定路径的Python版本了。

使用

pyenv

问题

pyenv 安装的Pythonsqlite3版本过低

Python的安装包会依赖sqlite3,但是MacOS默认的sqlite3版本太低了,所以我们需要安装高版本的sqlite3,但是安装高版本的sqlite3之后,Python的安装包找不到sqlite3的路径,所以我们可以在安装Python的时候指定sqlite3的路径。

  • 不需要指定 sqlite3 路径 pyenv install 3.11.9
  • 需要指定 sqlite3 路径 LDFLAGS="-L/usr/local/opt/sqlite/lib" CPPFLAGS="-I/usr/local/opt/sqlite/include" pyenv install 3.11.9

venv

Python 3.3 开始,标准库自带了 venv 模块用于创建虚拟环境。venv 的性能在 Python 3.11 中进一步提升。 venv 创建的虚拟环境只是一个包含独立 Python 解释器和相关文件的目录。如果删除虚拟环境,只需删除对应的目录即可。

使用

  1. 创建虚拟环境

直接使用当前的 Python 解释器创建虚拟环境。

$ python3.11 -m venv venv

可以指定 Python 解释器路径创建虚拟环境。

$ sudo ~/.pyenv/versions/3.11.9/bin/python3 -m venv venv

这里我使用了之前在pyenv下载的Python 3.11.9来创建虚拟环境。

  1. 激活虚拟环境
# Linux/macOS
$ source venv/bin/activate

# Windows
$ venv\Scripts\activate

查看虚拟环境中的 Python 版本

(venv) $ python3 --version
Python 3.11.9

查看虚拟环境中的 pip 版本及依赖

(venv) $ pip3 list
Package    Version
---------- -------
pip        24.0
setuptools 65.5.0

[notice] A new release of pip is available: 24.0 -> 24.3.1
[notice] To update, run: pip install --upgrade pip

更新 pip 版本

(venv) $ pip install --upgrade pip
Requirement already satisfied: pip in ./venv/lib/python3.11/site-packages (24.0)
Collecting pip
  Using cached pip-24.3.1-py3-none-any.whl.metadata (3.7 kB)
Using cached pip-24.3.1-py3-none-any.whl (1.8 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 24.0
    Uninstalling pip-24.0:
      Successfully uninstalled pip-24.0
Successfully installed pip-24.3.1
(venv) $ pip3 list                
Package    Version
---------- -------
pip        24.3.1
setuptools 65.5.0
  1. 退出虚拟环境
$ deactivate

参考

Github pyenv