virtualenv教程_virtualenv使用-程序员宅基地

技术标签: virtualenv  编程工具  

一、参考资料

virtualenv
virtualenv简单使用
virtualenv的介绍及基本使用(所有命令解释)
python虚拟环境 + 批量pip + 换源

二、相关介绍

irtualenv通过创建一个虚拟化的python运行环境,将我们所需的依赖安装进去的,便于不同的项目在同一台机器上开发运行,不同项目之间相互不干扰,即在一台机器上创建多个独立的python运行环境。如下所示:
在这里插入图片描述

使用 VirtualEnv 的理由

  • 隔离项目之间的第三方包依赖,如A项目依赖django1.2.5,B项目依赖django1.3。
  • 为部署应用提供方便,把开发环境的虚拟环境打包到生产环境即可,不需要在服务器上再折腾一翻。

三、重要说明

  1. pyhon2安装的virtualenv虚拟化出来的python运行环境是python2的,python3安装的virtualenv默认虚拟化环境则是python3的。
  2. 不能使用root(sudo)权限安装包,比如sudo pip。
  3. virtualenv更多的还是适用于本地开发不同的项目,但是在生产环境中还是使用docker给不同的项目创建不同的容器,各自分开运行为好,不宜放在一个单独的物理机中运行。

四、基本操作

  1. 安装virtualenv

    方法一:pip安装

    pip install virtualenv(推荐)
    或者
    sudo apt-get install virtualenv(不推荐,更新不方便)
    

    ​ 方法二:源码安装
    ​ 下载virtualenv源码package,通过执行setup.py来安装virtualenv。

  2. 创建虚拟环境
    新建的Python环境被放到当前目录下的venv目录

    virtualenv venv
    

    (推荐)创建虚拟环境(继承系统环境)

    virtualenv --system-site-packages venv
    

    创建干净的虚拟环境(默认)

    # 可能失效
    virtualenv --no-site-packages venv
    或者
    virtualenv venv
    

    注:参数–no-site-packages,安装到系统Python环境中的所有第三方包都不会复制过来,得到了一个不带任何第三方包的“干净”的Python运行环境

  3. 指定python版本,默认使用的是当前系统安装(/usr/bin/python)的python解释器

    # python2的环境
    virtualenv -p /usr/bin/python venv
    
    # python3的环境 
    virtualenv -p /usr/bin/python3 venv
    
  4. 激活虚拟环境

    source venv/bin/activate
    
  5. 退出虚拟环境

    deactivate
    
  6. 删除虚拟环境,删除venv文件夹即可

    sudo rm -rf venv
    
  7. 安装软件包

    pip install numpy
    
  8. 安装requirements.txt依赖包

    pip install -r requirements.txt
    
  9. 生成requirements.txt依赖包

    pip freeze > requirements.txt
    
  10. 其他参数

    用法:
    virtualenv [OPTIONS] DEST_DIR
    
    选项:
    –version:显示当前版本号。
    -h, –help:显示帮助信息。
    -v, –verbose:显示详细信息。
    -q, –quiet:不显示详细信息。
    -p PYTHON_EXE, –python=PYTHON_EXE指定所用的python解析器的版本,比如 –python=python2.5 就使用2.5版本的解析器创建新的隔离环境。 默认使用的是当前系统安装(/usr/bin/python)的python解析器。
    –clear:清空非root用户的安装,并重头开始创建隔离环境。
    –no-site-packages:令隔离环境不能访问系统全局的site-packages目录。
    –system-site-packages:令隔离环境可以访问系统全局的site-packages目录。
    –unzip-setuptools:安装时解压Setuptools或Distribute。
    –relocatable:重定位某个已存在的隔离环境。使用该选项将修正脚本并令所有.pth文件使用相当路径。
    –distribute:使用Distribute代替Setuptools,也可设置环境变量VIRTUALENV_DISTRIBUTE达到同样效要。
    –extra-search-dir=SEARCH_DIRS:用于查找setuptools/distribute/pip发布包的目录。可以添加任意数量的–extra-search-dir路径。
    –never-download:禁止从网上下载任何数据。此时,如果在本地搜索发布包失败,virtualenv就会报错。
    –prompt==PROMPT:定义隔离环境的命令行前缀。
    
  11. Pycharm中,直接创建virtualenv虚拟环境
    在这里插入图片描述

五、虚拟环境复制迁移

  1. 拷贝 venv 虚拟环境文件夹

    # 如果是服务器中
    # 1. 压缩文件
    tar -zcvf venv.tar.gz ./venv
    
    # 2. 解压文件
    tar -zxvf xxx.tar.gz
    
  2. 修改 venv/bin/activate 文件中的参数:

    VIRTUAL_ENV="/home/venv"

    VIRTUAL_ENV 路径改为当前 venv文件夹的路径

  3. 激活虚拟环境

    source ./venv/bin/activate

  4. 查看虚拟环境是否复制成功

    which python
    # 或者
    which pip
    

六、virtualenvwrapper

python虚拟环境–virtualenv

virtualenv缺点
因为virtual的启动、停止脚本都在特定文件夹(在项目目录里的venv文件夹),可能一段时间后,你可能会有很多个虚拟环境散落在系统各处,你可能忘记它们的名字或者位置。

virtualenvwrapper的优点
鉴于virtualenv不便于对虚拟环境集中管理,所以推荐直接使用 virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和虚拟环境工作变得便利,它把你所有的虚拟环境都放在一个地方。

安装virtualenvwrapper之前,确保virtualenv已安装。

关键步骤

  1. 安装virtualenvwrapper

    pip install virtualenvwrapper
    
  2. 设置配置文件,并更新配置

    sudo gedit ~/.bash
    export WORKON_HOME=~/Envs
    source /usr/local/bin/virtualenvwrapper.sh
    source ~/.bashrc
    
    说明:
    第二行:virtualenvwrapper存放虚拟环境目录,新建的虚拟环境都会存在该目录中。
    第三行:virtrualenvwrapper会安装到python的bin目录下,所以该路径是python安装目录下。
    
  3. 创建虚拟环境

    mkvirtualenv venv
    
  4. 指定python版本,默认使用的是当前系统安装(/usr/bin/python)的python解释器

    mkvirtualenv --python=/usr/bin/python3 venv
    
  5. 当前的虚拟环境目录

    workon
    
  6. 切换虚拟环境

    workon py3
    
  7. 退出虚拟环境

    deactivate
    
  8. 删除虚拟环境

    rmvirtualenv venv
    

七、可能出现的问题

Q1:创建虚拟环境失败

Traceback (most recent call last):
  File "/usr/bin/virtualenv", line 11, in <module>
    load_entry_point('virtualenv==15.1.0', 'console_scripts', 'virtualenv')()
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 724, in main
    symlink=options.symlink)
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 992, in create_environment
    download=download,
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 922, in install_wheel
    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=SCRIPT)
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 817, in call_subprocess
    % (cmd_desc, proc.returncode))
OSError: Command /media/mydisk/MyDocu...det/venv/bin/python3 - setuptools pkg_resources pip wheel failed with error code 2
----------------------------------------
...Installing setuptools < 51.3, pkg_resources, pip < 21, wheel...done.
Traceback (most recent call last):
  File "/usr/bin/virtualenv", line 9, in <module>
    load_entry_point('virtualenv==15.0.1', 'console_scripts', 'virtualenv')()
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 719, in main
    symlink=options.symlink)
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 991, in create_environment
    download=download,
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 918, in install_wheel
    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=SCRIPT)
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 812, in call_subprocess
    % (cmd_desc, proc.returncode))
OSError: Command /home/yoyo/MyDocumen...pth/venv/bin/python3 - "setuptools < 51.3" pkg_resources "pip < 21" wheel failed with error code 2
错误原因:
virtualenv与python版本不匹配
博主安装virtualenv的方式是apt-get方式,导致virtualenv版本无法更新

解决方法:
卸载virtualenv,使用pip方式安装
sudo apt-get --purge remove virtualenv
sudo apt-get autoremove
sudo apt-get autoclean

pip方式重新安装
pip install virtualenv

Q2:找不到virtualenv

tx2@tx2:~/Desktop/20220113$ virtualenv -p /usr/bin/python3 venv
bash: /usr/bin/virtualenv: No such file or directory
错误原因:
博主在jetson tx2中用pip3安装virtualenv,安装的路径不是系统默认路径。

解决办法:
1. 查找virtualenv的路径
locate virtualenv
输出:
/home/tx2/.local/bin/virtualenv

2. 创建软链接
sudo ln -s /home/tx2/.local/bin/virtualenv /usr/bin/virtualenv

3. 测试是否成功
virtualenv --version
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_37605642/article/details/120839557

智能推荐

【数据结构】查找1——线性表的查找(顺序查找、折半查找、分块查找)_图顺序查找-程序员宅基地

文章浏览阅读2.8k次。【数据结构】查找1——线性表的查找(顺序查找、折半查找、分块查找)_图顺序查找

zip包解压时报malformed input off : 0, length : 1-程序员宅基地

文章浏览阅读843次。使用ZipArchiveInputStream而非ZipInputStream的原因主要有以下两点:支持更多的压缩格式:ZipArchiveInputStream是Apache Commons Compress库中提供的类,能够支持多种压缩格式,包括Zip、Gzip、Tar、Jar等。而ZipInputStream是Java标准库中的类,只能读取普通的Zip文件。因此,如果需要处理多种压缩格式的文件,使用ZipArchiveInputStream会更加方便。更多的选项和功能:ZipArchiveInp_malformed input off : 0, length : 1

switch case结合枚举值使用,借助枚举的值来做case分支判断_switch case 枚举-程序员宅基地

文章浏览阅读8.3k次,点赞9次,收藏22次。https://blog.csdn.net/m0_37754981/article/details/80022169参考资料_switch case 枚举

rpc简介及原理-程序员宅基地

文章浏览阅读5.1k次,点赞2次,收藏30次。1.RPC简介及原理介绍RPC技术内部原理是通过两种技术的组合来实现的:本地方法调用 和 网络通信技术。1.1 RPC简介在上述本地过程调用的例子中,我们是在一台计算机上执行了计算机上的程序,完成调用。随着计算机技术的发展和需求场景的变化,有时就需要从一台计算机上执行另外一台计算机上的程序的需求,因此后来又发展出来了RPC技术。特别是目前随着互联网技术的快速迭代和发展,用户和需求几乎都是以指数式的方式在高速增长,这个时候绝大多数情况下程序都是部署在多台机器上,就需要在调用其他物理机器上的程序的情况。_rpc

AI大视觉(十七) | PANet(路径聚合网络)-程序员宅基地

文章浏览阅读7k次,点赞6次,收藏70次。本文来自公众号“AI大道理​目标检测或者实例分割不仅要关心语义信息,还要关注图像的精确到像素点的浅层信息。所以需要对骨干网络中的网络层进行融合,使其同时具有深层的语义信息和浅层的纹理信息。PANet整体结构PANet(Path Aggregation Network)最大的贡献是提出了一个自顶向下和自底向上的双向融合骨干网络,同时在最底层和最高层之间添加了一条“short-cut”,用于缩短层之间的路径。PANet还提出了自适应特征池化和全连接融合两个模块。其中自适应特征_panet

OperationalError: (sqlite3.OperationalError) unable to open database file解决方案_sqlite3.operationalerror: unable to open database -程序员宅基地

文章浏览阅读1.3w次,点赞13次,收藏14次。本文主要介绍了OperationalError: (sqlite3.OperationalError) unable to open database file解决方案,希望能对使用langchain读取sqlite文件的同学们有所帮助。文章目录1. 问题描述2. 解决方案_sqlite3.operationalerror: unable to open database file

随便推点

PID控制详解-程序员宅基地

文章浏览阅读10w+次,点赞551次,收藏3.2k次。PID控制详解一、PID控制简介 PID( Proportional Integral Derivative)控制是最早发展起来的控制策略之一,由于其算法简单、鲁棒性好和可靠性高,被广泛应用于工业过程控制,尤其适用于可建立精确数学模型的确定性控制系统。 在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节,它实际上是一种算法。PID控制器问..._pid控制

搭建静态网站-程序员宅基地

文章浏览阅读329次。搭建Http静态服务器环境任务时间:15min ~ 30min搭建静态网站,首先需要部署环境。下面的步骤,将告诉大家如何在服务器上通过 Nginx 部署 HTTP 静态服务。00、安装 Nginx在 CentOS 上,可直接使用yum来安装 Nginxyum install nginx -y安装完成后,使用nginx命令启动 Nginx:n..._在一个目录下创建静态站点

HTML5网页设计 (一)_html5网页制作-程序员宅基地

文章浏览阅读7k次,点赞2次,收藏23次。初始HTML5记事本简单实现HTML5页面_html5网页制作

CentOS 固定IP配置_centos配置ip地址-程序员宅基地

文章浏览阅读6.8k次。1、打开 VMware Workstation,点击 “编辑” -> "虚拟网络编辑器"2、选择 “更改设置”(若界面内没有,则不用理会)3、选择 “VMnet8”,更改为192.168.88.0(按需填写)、为255.255.255.0,点击 “NAT设置”4、更改为192.168.88.2(按需填写),当前界面点击确定,“虚拟网络编辑器”界面再点击确定。_centos配置ip地址

MATLAB 调用 p文件,Matlab中使用.p文件的方法-程序员宅基地

文章浏览阅读2.9k次。首先,P文件为了保护知识产权设计的一种加密文件,是不能查看的。运行比较简单,和调用m文件方法一样。下面是一些解释。P文件是对应M文件的一种预解析版本(preparsedversion)。因为当你第一次执行M文件时,Matlab需要将其解析(parse)一次(第一次执行后的已解析内容会放入内存作第二次执行时使用,即第二次执行时无需再解析),这无形中增加了执行时间。所以我们就预先作解释,那么以后再使用..._matlab怎么调用p文件

[CSS] 内联元素内的文字居中显示(按钮、链接等)_a-button居中-程序员宅基地

文章浏览阅读2.1k次。最近在做一个移动端的响应式页面,对自定义样式要求较高,很多地方需要细微的调整,比如按钮、链接等内联元素,不能只是让它看起来居中,而要做到“响应式”居中……水平居中很简单,但是垂直居中的问题困扰了我很久,直到我研究过bootstrap的_variables.scss文档后,才仔细地了解到一些组件的构造。如果修改了inline/inline-block元素的默认样式后,里面的文字不居中了,试试这个方法,只需要5步~_a-button居中

推荐文章

热门文章

相关标签