这个是针对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工具
照常进行,先来安装:然后就可以直接用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等,不过这里没有使用过,且也没有见过使用,所以就这样吧。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |