Python-Virtualenv

发布时间:2019-10-15 09:04:33编辑:auto阅读(1850)

    注释

    在使用virtualenv前ubuntu默认的解释器是python2.7,而且/usr/lib/python3里面已经安装好了ipython3requests

    $ python
    Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
    [GCC 5.4.0 20160609] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    $ ipython3    
    Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
    Type "copyright", "credits" or "license" for more information.
    
    IPython 5.1.0 -- An enhanced Interactive Python.
    ?         -> Introduction and overview of IPython's features.
    %quickref -> Quick reference.
    help      -> Python's own help system.
    object?   -> Details about 'object', use 'object??' for extra details.
    
    In [1]: import requests
    
    In [2]:

    使用

    由于一些兼容性问题,电脑上默认的python版本只能只能使用python2.7,所以创建命令要另外使用-p指定解释器

    $ mkdir my_project_folder; cd my_project_folder
    
    # 创建虚拟环境
    $ virtualenv -p /usr/bin/python3 venv
    Running virtualenv with interpreter /usr/bin/python3
    Using base prefix '/usr'
    New python executable in /home/ormsf/my_project_folder/venv/bin/python3
    Also creating executable in /home/ormsf/my_project_folder/venv/bin/python
    Installing setuptools, pkg_resources, pip, wheel...done.

    激活虚拟环境

    $ source venv/bin/activate

    现在可以看到提示符前面多了一个venv,代表虚拟环境创建成功

    (venv) ~/my_project_folder $ ipython3

    实践一下,虚拟环境和实际的环境隔离的

    # 无法使用ipython3
    (venv) ~/my_project_folder $ ipython3  
    Traceback (most recent call last):
      File "/usr/bin/ipython3", line 4, in <module>
        from IPython import start_ipython
    ImportError: No module named 'IPython'
    
    # 默认的解释器已经变成了python3
    (venv) ~/my_project_folder $ python
    Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
    [GCC 5.4.0 20160609] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    
    # 无法使用requests
    >>> import requests
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ImportError: No module named 'requests'

    注意不需要使用pip3

    (venv) ~/my_project_folder $ pip install requests
    Collecting requests
      Downloading requests-2.13.0-py2.py3-none-any.whl (584kB)
        100% |████████████████████████████████| 593kB 1.3MB/s 
    Installing collected packages: requests
    Successfully installed requests-2.13.0

    现在request已经能够正确使用了

    (venv) ~/my_project_folder $ python
    Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
    [GCC 5.4.0 20160609] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import requests
    >>> 
    (venv) ~/my_project_folder $ pip install ipython

    现在ipython也已经能够正确使用了

    (venv) ~/my_project_folder $ ipython
    Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
    Type "copyright", "credits" or "license" for more information.
    
    IPython 5.1.0 -- An enhanced Interactive Python.
    ?         -> Introduction and overview of IPython's features.
    %quickref -> Quick reference.
    help      -> Python's own help system.
    object?   -> Details about 'object', use 'object??' for extra details.
    
    In [1]: 

    退出

    (venv) ~/my_project_folder $ deactivate

    原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。

关键字