Python虚拟环境
1.python -m venv
1.1虚拟环境使用
当使用pycharm创建工程的时候,会默认创建一个venv的文件夹,且默认interpret也是该目录,而不是系统环境。
这是一个虚拟环境,也就是说比如有个工程A,用到了某些特殊的包,即除了该工程,别的工程大概率是用不到的,这种情况,我们就没有必要单独将其添加到系统package中,可以将其安装在virtual environment(venv)中。
使用方法如下:
进入该工程的venv/Script,在搜索框中输入cmd,这时会自动在该目录打开系统命令行;
此时输入activate.bat,可激活虚拟环境,此后进行pip install (包名)即可,运行用 Python **.py。
如果有多个项目,就生成多个虚拟环境一一搭配,好处:实现了项目环境隔离。
venv是一个python 3直接附带的包.所以你不需要pip安装任何东西。
#1.创建虚拟环境
python -m venv 虚拟环境名(如:zzz)
python -m venv /path/to/new/virtual/environment
#2.进入目录
cd 虚拟环境名/Scripts
#3.激活虚拟环境:只有激活之后,才算进入该虚拟环境,否则安装包时,依然是安装在全局环境之下
activate.bat
#4.退出
deactivate.bat
1.2虚拟环境移动位置后的处理(转载)
原文地址:https://my.oschina.net/hyjiacan/blog/3007779
前提:
接触Python的时间不算长,了解也仅限于普通的编码。
我们的开发都是离线开发,在搭建Python环境的时候,需要先到有网络的机器上面,创建虚拟环境,然后通过pip将依赖都安装好,再移动这个虚拟环境到开发机上面,通过启动activate进行开发。
我们在 Winodws 平台开发。
针对Python版本为3.7。
遇到的问题:
当直接将虚拟环境搞到开发机上时,根本不能启动虚拟环境。
解决方法:
通过一点点摸索,发现虚拟环境不仅与系统安装的全局Python有关,也与虚拟环境所在的(项目)路径有关,总结起来,需要编辑以下文件:
编辑文件 venv\pyvenv.cfg 第1行,设置为Python系统安装的全局路径
编辑文件 venv\Scripts\pip-script.py 第1行,设置为虚拟环境的python.exe文件路径
编辑文件 venv\Scripts\pip3-script.py 第1行,设置为虚拟环境的python.exe文件路径
编辑文件 venv\Scripts\pip3.7-script.py 第1行,设置为虚拟环境的python.exe文件路径
编辑文件 venv\Scripts\activate 第40行,设置为虚拟环境路径
编辑文件 venv\Scripts\activate.bat 第11行,设置为虚拟环境路径
编辑文件 venv\Scripts\activate.ps1 第30行,设置为虚拟环境路径
编辑文件 venv\Scripts\easy_install-script.py 第1行,设置为虚拟环境的python.exe文件路径
编辑文件 venv\Scripts\easy_install-3.7-script.py 第1行,设置为虚拟环境的python.exe文件路径
然后通过执行命令
%comspec% /k \path\to\venv\Scripts\activate.bat
来启动虚拟环境。
一键工具:
毕竟不可能只写一个项目就完了,这样的操作会经常发生的。
所以就搞了一个小工具,专门用来处理这些,点点鼠标就能搞定所有事情。
传送门: (https://gitee.com/hyjiacan/PyVenvInstaller)
2.virtualenv
除了使用-m venv, 还可以使用virtualenv, 它是一个独立的库。
2.1安装
Windows环境,先安装virtualenv 输入命令:
pip install virtualenv
2.2创建虚拟环境
输入命令:
virtuallenv 环境名
(如果有多个Python版本,可以通过命令:virtualenv -p python路径 环境名,来创建虚拟环境)
2.3启动
进入环境下的scripts 文件夹下,输入命令执行脚本
deactivate
2.4在虚拟环境pip安装包
比如要安装Django2.0版本就儿可以:pip install Django==2.0
2.5退出虚拟环境
输入命令:
deactivate
3.管理虚拟环境virtualenvwrapper
虚拟环境可以使用一些工具来管理,比如virtualenvwrapper
3.1安装
pip install virtualenvwrapper-win # 安装windows版,其他如linux去掉'-win'
3.2创建虚拟环境
mkvirtualenv 环境名
与上面直接用virtualenv创建不同的是,前面那个是在当前文件夹下创建虚拟环境,而这个是统一在当前用户的envs文件夹下创建,并且会自动进入到该虚拟环境
如果不想在默认路径创建(c:\user\envs)可以新建一个环境变量:
- WORKON_HOME
然后在里面设置默认路径,设置完成后如下操作:
进入pthon的安装路径,我这里是C:\Program Files\python36\Scripts下,具体根据自己的安装路径
双击virtualenvwrapper.bat
重新打开cmd命令行窗口,即可使用
如果要指定Python版本: mkviryualenv --python=python路径(到exe文件) 环境名
敲完命令,如下显示
created virtual environment CPython3.6.8.final.0-64 in 12612ms
creator CPython3Windows(dest=E:\pythonenv\te01, clear=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\zhanglei\AppData\Local\pypa\virtualenv)
added seed packages: pip==20.1.1, setuptools==49.1.0, wheel==0.34.2
activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
(te01) C:\Windows\System32>
3.3进入虚拟环境
workon 环境名
3.4退出虚拟环境
deactivate
3.5删除环境
rmvirtualenv 环境名
3.6列出虚拟环境
lsvirtualenv
3.7进入到虚拟环境目录
cdvirtualenv 环境名
4.CentOS下virtualenvwrapper
退出所有的虚拟环境,在物理环境下安装
4.1下载安装virtualenvwrapper
pip3 install virtualenvwrapper
4.2查看python3的文件和virtualenvwrapper.sh的路径
# 查找python3命令的路径
[root@instance-nnja0or7 ~]# which python3
# 结果
/usr/bin/python3
# 查找virtualenvwrapper.sh脚本的路径
[root@instance-nnja0or7 ~]# find / -name virtualenvwrapper.sh
# 结果
/usr/local/python3/bin/virtualenvwrapper.sh
4.3修改linux的当前用户的配置文件~/.bashrc
vim ~/.bashrc
# 末尾添加如下代码
WORKON_HOME=~/Envs
VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/python3/bin/virtualenvwrapper.sh
配置解释
#设置virtualenv的统一管理目录,以后自动下载的虚拟环境都放在这
WORKON_HOME=~/Envs
#添加virtualenvwrapper的参数,生成干净隔绝的环境
VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
#指定python解释器的本体
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
#执行virtualenvwrapper安装脚本
source /usr/local/python3/bin/virtualenvwrapper.sh
~/.bashrc与/etc/profile
- /etc/profile,/etc/bashrc 是系统全局环境变量设定
- /.profile,/.bashrc用户家目录下的私有环境变量设定
当登入系统时候获得一个shell进程时,其读取环境设定档有三步
- 首先读入的是全局环境变量设定档/etc/profile,然后根据其内容读取额外的设定的文档,如
/etc/profile.d和/etc/inputrc - 然后根据不同使用者帐号,去其家目录读取/.bash_profile,如果这读取不了就读取/.bash_login,这个也读取不了才会读取
~/.profile,这三个文档设定基本上是一样的,读取有优先关系 - 然后再根据用户帐号读取~/.bashrc
至于/.profile与/.bashrc的区别:都具有个性化定制功能
~/.profile可以设定本用户专有的路径,环境变量,等,它只能登入的时候执行一次
~/.bashrc也是某用户专有设定文档,可以设定路径,命令别名,每次shell script的执行都会使用它一次
4.4退出当前会话,重新登陆
登陆后会加载一段代码
virtualenvwrapper.user_scripts creating /root/Envs/premkproject
virtualenvwrapper.user_scripts creating /root/Envs/postmkproject
virtualenvwrapper.user_scripts creating /root/Envs/initialize
virtualenvwrapper.user_scripts creating /root/Envs/premkvirtualenv
virtualenvwrapper.user_scripts creating /root/Envs/postmkvirtualenv
virtualenvwrapper.user_scripts creating /root/Envs/prermvirtualenv
virtualenvwrapper.user_scripts creating /root/Envs/postrmvirtualenv
virtualenvwrapper.user_scripts creating /root/Envs/predeactivate
virtualenvwrapper.user_scripts creating /root/Envs/postdeactivate
virtualenvwrapper.user_scripts creating /root/Envs/preactivate
virtualenvwrapper.user_scripts creating /root/Envs/postactivate
virtualenvwrapper.user_scripts creating /root/Envs/get_env_details
4.5碰到的问题
mkvirtualenv时报错:ERROR: virtualenvwrapper could not find virtualenv in your path
# 解决:~/.bashrc增加路径
VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/python3/bin/virtualenv
mkvirtualenv时报错:virtualenv: error: unrecognized arguments: --no-site-packages
- 使用virtualenv --version,看到自己的版本大于20,就可以将如下这段删除:
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
因为从版本20开始,默认就是’--no-site-packages‘了。
2. 重新source一下bashrc文件;
3. 重启shell,然后就可以正常工作了。
mkvirtualenv时报错:which: no virtualenv in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin) ERROR: virtualenvwrapper could not find virtualenv in your path
which: no virtualenv in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
ERROR: virtualenvwrapper could not find virtualenv in your path
将python环境下的virtualenv拷贝至/usr/bin/目录下
[root@localhost bin]# ls -al | grep virtualenv
[root@localhost bin]# cd /usr/local/python3/bin/
[root@localhost bin]# ln virtualenv /usr/bin/virtualen
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix