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进程时,其读取环境设定档有三步
  1. 首先读入的是全局环境变量设定档/etc/profile,然后根据其内容读取额外的设定的文档,如
    /etc/profile.d和/etc/inputrc
  2. 然后根据不同使用者帐号,去其家目录读取/.bash_profile,如果这读取不了就读取/.bash_login,这个也读取不了才会读取
    ~/.profile,这三个文档设定基本上是一样的,读取有优先关系
  3. 然后再根据用户帐号读取~/.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

  1. 使用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
posted @   默默雷  阅读(316)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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
点击右上角即可分享
微信分享提示

目录导航