Skip to main content

Python 安装

Python 虚拟环境

如果你是新手,此处可以略过,等学习了后面的内容以后再回来学习。

什么是虚拟环境

在刚接触 Python 时,当你需要使用某个 Python 包的时候,直接使用 pip install 来安装包,这些安装的包都在同一个 Python 环境里面的。

当我们安装的包太多太杂以后,我们 Python 环境就非常不稳定了,可能无法安装新的包,也可能安装新的包以后,旧的包无法导入运行了,为了解决这个问题,引入了虚拟环境的概念。

虚拟环境就是每个项目都单独使用一个隔离 Python 环境,每个项目自己安装的包只在这个虚拟环境下有效,不会影响其他项目的。

我们通常会用这些工具来管理虚拟环境:内置venv、virtualenv、virtualenvwrapper、conda,我只列出了最常用最受欢迎的一些个工具来介绍。还有pipenv、uv、poetry等等。

venv

venv 是 Python 内置的虚拟环境管理工具,不依赖任何三方包,功能简单、好用、稳定,大部分场景下其实就已经足够使用了。

# 在当前目录创建一个虚拟环境
# 第一个 venv 是Python模块
# 第二个 venv 是虚拟环境目录名称
$ python3 -m venv venv

# 激活此虚拟环境
$ source venv/bin/activate

# 在虚拟环境中时,退出虚拟环境命令
$ deactivate

# 查看 pip 版本,会显示在你当前的虚拟环境中
$ pip -V
pip 24.0 from /home/yzy/tmpy/venv/lib/python3.12/site-packages/pip (python 3.12)

# 查看 python3 路径
$ which python3
/home/yzy/tmpy/venv/bin/python3


# 以后安装包、运行程序这些的操作,都必须首先激活虚拟环境
source venv/bin/activate
pip install ...
python main.py


# 如果不在需要此虚拟环境,直接删除即可(先退出虚拟环境),不会影响其他环境
$ deactivate
$ rm -rf venv

virtualenv

virtualenv 是一个单独的包,使用 pip 安装即可,由于在 Python2 的时候还没有内置 venv,所以 virtualenv 就是那时候的首先,现在 Python3 基本不用了,只用内置的 venv 就好了。

$ pip install virtualenv

# 安装完成后,可能会有下面的提示,表示 virtualenv 的安装命令的目录不在 PATH 环境变量中
# 需要根据实际情况添加,比如我的提示如下:
WARNING: The script virtualenv is installed in '/home/yzy/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

# 添加环境变量 vim ~/.bashrc
export PATH=/home/yzy/.local/bin:$PATH

# 验证 virtualenv 命令
$ source ~/.bashrc
$ virtualenv --version
virtualenv 20.24.0 from /home/yzy/.local/lib/python3.10/site-packages/virtualenv/__init__.py

只有四种场景:创建虚拟环境、激活虚拟环境、取消激活虚拟环境、删除虚拟环境。

virtualenv myvenv                        # 在当前目录使用 默认Python 创建myenv
virtualenv -p /usr/bin/python3.10 myvenv # 在当前目录使用 指定Python myvenv,当有多个版本Python时使用

source myvenv/bin/activate               # 激活指定的虚拟环境,这里是 myvenv
pip -V                                   # 激活后查看虚拟环境路径是否正确
pip install xxxx                         # 注意要在虚拟环境中安装
pip uninstall xxxx                       # 注意要在虚拟环境中卸载

deactivate                               # 在虚拟环境中的情况下,直接输入 deactivate 退出虚拟环境

rm -rf myvenv                            # 当不在需要时直接删除,不会影响其他环境

virtualenvwrapper

virtualenv 其实已经满足了我们的需求使用独立的虚拟环境

但是在使用时有点麻烦,每次要找到虚拟环境的路径,然后使用 source 命令激活。

virtualenvwrapper 对 virtualenv 进行了包装,同时提供了一些更好用的其他功能。

# 安装时注意不要在任何虚拟环境里面安装,先要安装一个全局的 virtualenvwrapper
pip install virtualenvwrapper

# 创建虚拟环境目录:以后创建的虚拟环境某会在该目录下
mkdir $HOME/.virtualenvs

# 添加登录 session 启用 virtualenvwrapper
# 注意:VIRTUALENVWRAPPER_PYTHON 的值一定要和 pip3 是相对应的
vim ~/.bashrc

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.10
export VIRTUALENVWRAPPER_VIRTUALENV=~/.local/bin/virtualenv
source $HOME/.local/bin/virtualenvwrapper.sh

# 退出当前 shell 重新登录使 virtualenvwrapper 生效,或者 source
source ~/.bashrc

使用 virtualenvwrapper:创建、激活、取消激活、删除

mkvirtualenv myvenv                        # 在 ~/.virtualenvs 目录创建 myvenv 虚拟环境
mkvirtualenv -p /usr/bin/python3.10 myvenv # 创建指定版本的虚拟环境

workon                                     # 查看所有的虚拟环境
workon myvenv                              # 激活指定的虚拟环境 myvenv

rmvirtualenv myvenv                        # 删除指定的虚拟环境 myvenv,会删除虚拟环境目录

deactivate                                 # 同样使用 deactivate 退出虚拟环境

如何快速进入项目目录:

每个虚拟环境都是针对单独的项目的,如果想在激活虚拟环境后自动进入项目目录,可以使用 cdproject 命令实现。

# 配置 hello_flask 项目使用 myvenv,且项目目录为 /home/yzy/hello_flask
echo "/home/yzy/hello_flask" > /home/yzy/.virtualenvs/myvenv/.project

# 然后进入 myvenv 虚拟环境就会自动进入 /home/yzy/hello_flask 目录了
workon myvenv

conda

由于 conda 是一个功能更全,更复杂的管理工具,详细内容见:

切换 pip 源

有时在网络环境不好时,安装比较慢,可以切换到国内源,比如阿里的。

临时生效方式切换指定源

# 在安装的时候指定 -i 参数
$ pip install pylint -i http://mirrors.aliyun.com/pypi/simple

修改配置文件永久生效方式:

  • Windows 配置文件路径:C:\Users\用户名\pip\pip.ini
  • Linux/Unix 系列 配置文件路径:~/.pip/pip.conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple
trusted-host = mirrors.aliyun.com

常见国内 pip 源: