搭建Python独立环境:virtualenv的应用

本文介绍virtualenv这款Python环境管理工具,帮助解决不同项目间的依赖冲突问题。通过实例演示如何安装及使用virtualenv创建独立的开发环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文转载自:https://blog.youkuaiyun.com/abc_12366/article/details/81111160

virtualenv是什么?它是为了方便Python独立开发应运而生的一款集成管理工具,通俗的说就是在和系统本身的环境不冲突的前提下独立出一块隔离的空间,把它留给新项目的依赖环境——就是为了解决不同版本、不同类型的Python依赖冲突而诞生的!


virtualenv简介和安装

virtualenv是Github上的一个项目,按照它的原话就是『Python虚拟环境的构建者』,这是它的项目地址:Virtual Python Environment builder

这里简单介绍下它的工作原理:virtualenv把运行Python程序必须的基本环境,包括二进制Python自身、Python标准库、pip安装器,以及至关重要的site-packages目录,全部拷贝一份到一个完全隔离的目录下,这个目录就是你的独立开环境

在项目首页最下面有安装教程的超链接:Installation,你可以简单敲pip命令进行安装,这是最简便的方法

pip install virtualenv
 

    另外还用第二种方法:把项目整个当下来,然后手动安装

    # Use virtualenv globally
    $ curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-X.X.tar.gz
    $ tar xvfz virtualenv-X.X.tar.gz
    $ cd virtualenv-X.X
    $ [sudo] python setup.py install
    
    # Use virtualenv locally
    $ curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-X.X.tar.gz
    $ tar xvfz virtualenv-X.X.tar.gz
    $ cd virtualenv-X.X
    $ python virtualenv.py myVE
     

      事实上你需要全局安装的Python套件只有两个,即pip和virtualenv,如果 把virtualenv包括的pip算进去,那其实只要安装一个virtualenv已足矣


      使用virtualenv创建独立项目

      在安装好virtualenv后,就可以创建隔离环境的Python项目了,下面以demo这个项目为例

      1. 创建项目根目录,命名为demo并进入该目录

      ➜  ~ mkdir demo
      ➜  ~ cd demo
      ➜  demo 
       

        2. 使用virtualenv命令,建议加上–no-site-packages选项

        ➜  demo virtualenv --no-site-packages venv
        Using base prefix '/Library/Frameworks/Python.framework/Versions/3.6'
        New python executable in /Users/macbookpro/demo/venv/bin/python3.6
        Also creating executable in /Users/macbookpro/demo/venv/bin/python
        Installing setuptools, pip, wheel...done.
         

          3. 如果想要手动指定Python版本,请使用–python=$PYTHON_VERSION选项

          ➜  demo virtualenv --python=python2.7 --no-site-packages venv1
          Running virtualenv with interpreter /usr/local/bin/python2.7
          New python executable in /Users/macbookpro/demo/venv1/bin/python2.7
          Also creating executable in /Users/macbookpro/demo/venv1/bin/python
          Installing setuptools, pip, wheel...done.
           

            4. 你甚至可以指定系统没有安装的Python版本,比如我这里的Python3.7,但是绝对不要想当然的填写Pyhton版本号否则会报错“doesn’t exist”

            ➜  demo virtualenv --python=python3.7 --no-site-packages venv2
            Running virtualenv with interpreter /usr/local/bin/python3.7
            Using base prefix '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7'
            /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/virtualenv.py:1041: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
              import imp
            New python executable in /Users/macbookpro/demo/venv2/bin/python3.7
            Also creating executable in /Users/macbookpro/demo/venv2/bin/python
            Installing setuptools, pip, wheel...done.
            ➜  demo virtualenv --python=python4.0 --no-site-packages venv3
            The path python4.0 (from --python=python4.0) does not exist
             

              5. 在新建的venv目录下,重点关注bin目录,它包括了pip管理器和python对应版本的解释器Pythonx.x.

              ➜  venv ls
              bin                include            lib                pip-selfcheck.json
              ➜  venv cd bin
              ➜  bin ls
              activate         easy_install     pip3.6           python3.6
              activate.csh     easy_install-3.6 python           wheel
              activate.fish    pip              python-config
              activate_this.py pip3             python3
               
                ➜  demo venv/bin/pip install requests
                Collecting requests
                  Downloading https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl (91kB)
                    100% |████████████████████████████████| 92kB 138kB/s 
                Collecting idna<2.8,>=2.5 (from requests)
                  Downloading https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1af2f8e4355746a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl (58kB)
                    100% |████████████████████████████████| 61kB 52kB/s 
                Collecting urllib3<1.24,>=1.21.1 (from requests)
                  Downloading https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c53851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl (133kB)
                    100% |████████████████████████████████| 143kB 29kB/s 
                Collecting chardet<3.1.0,>=3.0.2 (from requests)
                  Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
                    100% |████████████████████████████████| 143kB 53kB/s 
                Collecting certifi>=2017.4.17 (from requests)
                  Downloading https://files.pythonhosted.org/packages/7c/e6/92ad559b7192d846975fc916b65f667c7b8c3a32bea7372340bfe9a15fa5/certifi-2018.4.16-py2.py3-none-any.whl (150kB)
                    100% |████████████████████████████████| 153kB 41kB/s 
                Installing collected packages: idna, urllib3, chardet, certifi, requests
                Successfully installed certifi-2018.4.16 chardet-3.0.4 idna-2.7 requests-2.19.1 urllib3-1.23
                 

                  6. 用virtual内置pip安装的包被放在lib目录下

                  ➜  demo venv/bin/pip show requests
                  Name: requests
                  Version: 2.19.1
                  Summary: Python HTTP for Humans.
                  Home-page: http://python-requests.org
                  Author: Kenneth Reitz
                  Author-email: me@kennethreitz.org
                  License: Apache 2.0
                  Location: /Users/macbookpro/demo/venv/lib/python3.6/site-packages
                  Requires: idna, certifi, chardet, urllib3
                  Required-by:
                   

                    7. 为了减少打字,可激活activate文件,这样原来的venv/bin/pip就要写pip,代替了系统原来的pip命令,不用时激活deactivate命令即可

                    ➜  demo source venv/bin/activate
                    (venv) ➜  demo pip list
                    Package    Version  
                    ---------- ---------
                    certifi    2018.4.16
                    chardet    3.0.4    
                    idna       2.7      
                    pip        10.0.1   
                    requests   2.19.1   
                    setuptools 40.0.0   
                    urllib3    1.23     
                    wheel      0.31.1   
                    (venv) ➜  demo pip uninstall requests
                    Uninstalling requests-2.19.1:
                      Would remove:
                        /Users/macbookpro/demo/venv/lib/python3.6/site-packages/requests-2.19.1.dist-info/*
                        /Users/macbookpro/demo/venv/lib/python3.6/site-packages/requests/*
                    Proceed (y/n)? y
                      Successfully uninstalled requests-2.19.1
                    (venv) ➜  demo pip list
                    Package    Version  
                    ---------- ---------
                    certifi    2018.4.16
                    chardet    3.0.4    
                    idna       2.7      
                    pip        10.0.1   
                    setuptools 40.0.0   
                    urllib3    1.23     
                    wheel      0.31.1   
                    (venv) ➜  demo 
                    (venv) ➜  demo deactivate 
                    ➜  demo 
                     

                      8. pip和virtualenv合作使用起来很爽,pip使用-r参数指定requirement文件

                      pip install -r requirements.txt
                       
                      • 1

                      ok,这样基本的隔离Python开发环境就被创建出来啦~关于virtualenv暂就讲到这里,还有些比较方便的功能有待大家共同探索^ ^

                      参考
                      ಥ_ಥ A non-magical introduction to Pip and Virtualenv for Python beginners
                      ಥ_ಥ Requirements Files

                      备注1:Python2.x和3.x的site-packages目录
                      Python2.7:/Library/Python/2.7/site-packages
                      Python3.6:/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages

                      备注2:使用问题
                      事实上在工程中已经不用virtuakenv了,我们有更好的替代品virtualenvwrapper,它封装了virtualenv的所有功能并有利于集中管理,不过不必担心二者的基本思想是一样的,变化的无非是一些命令罢了

                      评论
                      添加红包

                      请填写红包祝福语或标题

                      红包个数最小为10个

                      红包金额最低5元

                      当前余额3.43前往充值 >
                      需支付:10.00
                      成就一亿技术人!
                      领取后你会自动成为博主和红包主的粉丝 规则
                      hope_wisdom
                      发出的红包
                      实付
                      使用余额支付
                      点击重新获取
                      扫码支付
                      钱包余额 0

                      抵扣说明:

                      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
                      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

                      余额充值