python虚拟环境

这个是针对python应用的一个虚拟环境的工具使用篇。

虚拟环境的存在,或者说python虚拟环境的存在,是为了将python项目的依赖和运行环境进行隔离,项目间互不干扰而存在。python是一个第三方库生态异常健全的语言,但是各种库的使用也有着内部结构依赖,难保有时候在各种项目中会有冲突,所以直接使用主机的python环境,会出现问题。

python环境准备

如果已经有了python环境,那么可以跳过这个部分了。笔者早期是在windows进行编程,现在有了第二台电脑,就重装了其中一台为ubuntu系统,原来的windows更多作为笔记记录和工作的远程使用。

ubuntu下python和pip安装

下面先进行的是ubuntu系统下的python安装:

# 获取apt最新包信息
$ sudo apt update
# apt下载安装python3包和对应的pip
$ sudo apt install python3 python3-pip
# 检查版本号
$ python3 -V
Python 3.12.7
$ pip -V
pip 24.2 from /usr/lib/python3/dist-packages/pip (python 3.12)

ubuntu中的apt进行安装,不需要特别进行配置,安装好了,就是其路径已经配置好,系统已经知晓其路径,可以直接执行。但windows不一样,自定义的安装,一般都需要将其安装路径告知系统,知会系统安装好了的软件路径的办法,就是配置环境变量。

windows下python安装

windows下的安装,先要从python官网去下载对应安装工具包:

下载完成后便是一阵跟随指引的安装操作,如果是工具包自己的操作,没有自定义介入,那么就会安装在C盘且配置环境变量,直接可用,打开如下cmd窗口:

PS C:\Users\Gemini\Desktop> python -V
Python 3.12.7
PS C:\Users\Gemini\Desktop> pip -V
pip 24.3.1 from D:\software\Python312\Lib\site-packages\pip (python 3.12)

我这是自定义安装,指定了安装路径在D盘的特定software文件夹,所以路径如上,如果是自定义安装,可以按照这个指引来操作。

virtualenv工具

virtualenv是笔者早期使用的一个工具,很适应,这个工具也是python第三方库的一个,python第三方库的提供,有的是单纯的代码库,有的也会提供可执行文件作为辅助,安装好以后即可使用(不过windows环境需要将D:\software\python312\Scripts路径引入环境变量)。

$ sudo pip install virtualenv

这是ubuntu环境中的命令,sudo是为了提升当前命令执行的权限为超级管理员,windows里不用加这个前缀,安装即用。ubuntu下如此操作:

# 创建虚拟环境
$ virtualenv the_project
# ls和tree查看the_project
$ ls the_project/
bin  lib  pyvenv.cfg
$ tree -L 2 the_project/
the_project/
├── bin
│   ├── activate
│   ├── activate.csh
│   ├── activate.fish
│   ├── activate.nu
│   ├── activate.ps1
│   ├── activate_this.py
│   ├── pip
│   ├── pip3
│   ├── pip-3.12
│   ├── pip3.12
│   ├── python -> /usr/bin/python3
│   ├── python3 -> python
│   └── python3.12 -> python
├── lib
│   └── python3.12
└── pyvenv.cfg
# 激活虚拟环境
$ source the_project/bin/activate
(the_project)$ pip list
Package Version
------- -------
pip     24.2
# 退出虚拟环境
(the_project)$ deactivate
$ pip list
Package                   Version
------------------------- --------------
attrs                     23.2.0
autocommand               2.2.2
Automat                   24.8.1
Babel                     2.14.0
bcc                       0.30.0
bcrypt                    4.2.0
blinker                   1.8.2
....
$

windows下的操作大致相同,不过不同的是激活虚拟环境的路径操作:

PS C:\Users\Gemini\Desktop> .\the_project\Scripts\activate
(the_project) PS C:\Users\Gemini\Desktop> pip list
Package Version
------- -------
pip     25.0.1
(the_project) PS C:\Users\Gemini\Desktop> python -V
Python 3.12.7
(the_project) PS C:\Users\Gemini\Desktop> deactivate
PS C:\Users\Gemini\Desktop> pip list
Package            Version
------------------ ----------
certifi            2024.12.14
charset-normalizer 3.4.1
distlib            0.3.9
filelock           3.18.0
idna               3.10
pip                24.3.1
platformdirs       4.3.7
requests           2.32.3
urllib3            2.3.0
virtualenv         20.29.3
PS C:\Users\Gemini\Desktop>

ok,就这样,从上面可以发现进入虚拟环境后库依赖的不同,这就是笔者配置虚拟环境的需要,环境隔离。嗯,还有一件事,virtualenv进行配置的虚拟环境是依赖于创建的该文件夹的,删了就算完了,而且每一次虚拟环境的依赖配置都是一次对于存储的负担,配置过多,负担很大,所以如果不是长期使用的项目,就给把环境依赖freeze到requirements.txt中,把依赖干掉先吧。

pipenv工具

照常进行,先来安装:

$ pip install pipenv

然后就可以直接用pipenv工具了.下面列出一些pipenv的简单操作命令:

# 切换进入虚拟环境的shell中
$ pipenv shell
# 安装依赖,也是很多虚拟环境的起始第一步,其实和pipenv shell差不多
$ pipenv install
# 卸载依赖
$ pipenv uninstall
$ pipenv uninstall --all
# 更新所有依赖
$ pipenv update
$ pipenv update 某包
# 卸载虚拟环境
$ pipenv --rm
# 创建一个基于python3.7的虚拟环境
$ pipenv --python 3.7
# 导出当前依赖,类似pip freeze
$ pipenv lock -r > requirements.txt
# 展示依赖结构
$ pipenv graph
# 创建python3的虚拟环境
$ pipenv --three
# 创建python2的虚拟环境
$ pipenv --two

下面简单操作一下创建一个用于flask项目的虚拟环境:

$ mkdir djangoPra && cd djangoPra
# 开始创建虚拟环境
$ pipenv shell
# ok
(djangoPra)$ ls
Pipfile
(djangoPra)$ pip install django
(djangoPra)$ pipenv graph
Django==5.1.7
├── asgiref 
└── sqlparse
(djangoPra)$ django-admin --version
5.1.7
(djangoPra)$ deactivate
$ pipenv shell
Launching subshell in virtual environment...
gemini@gemini:~/tutorial/djangoPra$  source /home/gemini/.local/share/virtualenvs/djangoPra-SPzxzL2W/bin/activate
(djangoPra)$ 

可能这里不太需要windows下进行的虚拟环境操作,毕竟有很多可用IDE,提供的生态都很好吧,不一定需要像我这样搞vscode自定义那么多。

针对python应用的虚拟环境建立还有着venv和conda等,不过这里没有使用过,且也没有见过使用,所以就这样吧。

posted @ 2025-04-07 14:29  夏目&贵志  阅读(32)  评论(0)    收藏  举报