• python学习笔记(9)—— 虚拟环境和包


    参考:python 官方教学英文文档

    虚拟环境和包(Virtual Environments and Packages)

    介绍(Introduction)

    Python应用程序经常使用标准库之外的包和模块。有时应用程序需要特定版本的库,因为应用程序可能要求某个特定的bug已经被修复,或者应用程序可能使用过时版本的库接口编写。这意味着一个Python安装不可能满足每个应用程序的需求。如果应用程序A需要某个模块的1.0版本,而应用程序B需要2.0版本,那么这两个需求是冲突的,安装1.0或2.0版本都会导致一个应用程序无法运行。这个问题的解决方案是创建一个虚拟环境,这是一个自包含的目录树,其中包含针对特定版本Python的Python安装,以及一些额外的包。不同的应用程序可以使用不同的虚拟环境。为了解决前面需求冲突的例子,应用程序A可以有自己的虚拟环境,安装版本1.0,而应用程序B有另一个虚拟环境,安装版本2.0。如果应用程序B需要将库升级到版本3.0,这不会影响应用程序a的环境。

    创建虚拟环境(Creating Virtual Environments)

    用于创建和管理虚拟环境的模块称为venvvenv通常会安装最新版本的Python。如果您的系统上有多个版本的Python,您可以通过运行python3或任何您想要的版本来选择一个特定的Python版本。

    要创建一个虚拟环境,决定你想要放置它的目录,并以脚本的形式运行venv模块和目录路径:

    python3 -m venv tutorial-env
    
    • 1

    这将创建tutorial-env目录(如果它不存在的话),并在其中创建包含Python解释器副本和各种支持文件的目录。

    虚拟环境的常用目录位置是.venv。这个名称通常将目录隐藏在您的shell中,因此不碍事,同时给它一个解释目录存在原因的名称。它还防止与某些工具支持的.env环境变量定义文件发生冲突。

    一旦创建了虚拟环境,就可以激活它。

    在Windows上,运行:

    tutorial-env\Scripts\activate.bat
    
    • 1

    在Unix或MacOS上,执行:

    source tutorial-env/bin/activate
    
    • 1

    (此脚本是为bash shell编写的。如果你使用csh或fish,则应该用activate.cshactivate.fish 替代)

    激活虚拟环境将改变shell的提示符,以显示正在使用的虚拟环境,并修改环境,以便运行python将获得特定版本和安装的python。例如:

    $ source ~/envs/tutorial-env/bin/activate
    (tutorial-env) $ python
    Python 3.5.1 (default, May  6 2016, 10:59:36)
      ...
    >>> import sys
    >>> sys.path
    ['', '/usr/local/lib/python35.zip', ...,
    '~/envs/tutorial-env/lib/python3.5/site-packages']
    >>>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    要停用虚拟环境,在终端输入:

    deactivate
    
    • 1

    使用pip管理包(Managing Packages with pip)

    您可以使用名为pip的程序安装、升级和删除包。默认情况下,pip将从Python包索引https://pypi.org安装包。您可以通过在web浏览器中访问Python包索引来浏览它。

    pip有许多子命令:" install “、” uninstall “、” freeze "等(参见安装Python模块指南获取pip的完整文档)。

    您可以通过指定包的名称来安装包的最新版本:

    (tutorial-env) $ python -m pip install novas
    Collecting novas
      Downloading novas-3.1.1.3.tar.gz (136kB)
    Installing collected packages: novas
      Running setup.py install for novas
    Successfully installed novas-3.1.1.3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    你也可以通过在包名后面加上==和版本号来安装一个特定版本的包:

    (tutorial-env) $ python -m pip install requests==2.6.0
    Collecting requests==2.6.0
      Using cached requests-2.6.0-py2.py3-none-any.whl
    Installing collected packages: requests
    Successfully installed requests-2.6.0
    
    • 1
    • 2
    • 3
    • 4
    • 5

    如果您重新运行此命令,pip将注意到所请求的版本已经安装,并且不做任何事情。你可以提供一个不同的版本号来获取该版本,或者你可以运行python -m pip install —upgrade将包升级到最新版本:

    (tutorial-env) $ python -m pip install --upgrade requests
    Collecting requests
    Installing collected packages: requests
      Found existing installation: requests 2.6.0
        Uninstalling requests-2.6.0:
          Successfully uninstalled requests-2.6.0
    Successfully installed requests-2.7.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    python -m pip uninstall后跟一个或多个包名将从虚拟环境中删除包。

    python -m pip show将显示关于特定包的信息:

    (tutorial-env) $ python -m pip show requests
    ---
    Metadata-Version: 2.0
    Name: requests
    Version: 2.7.0
    Summary: Python HTTP for Humans.
    Home-page: http://python-requests.org
    Author: Kenneth Reitz
    Author-email: me@kennethreitz.com
    License: Apache 2.0
    Location: /Users/akuchling/envs/tutorial-env/lib/python3.4/site-packages
    Requires:
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    python -m pip list将显示虚拟环境中安装的所有包:

    (tutorial-env) $ python -m pip list
    novas (3.1.1.3)
    numpy (1.9.2)
    pip (7.0.3)
    requests (2.7.0)
    setuptools (16.0)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    python -m pip freeze将生成已安装包的类似列表,但输出使用python -m pip install 期望的格式。一个常见的惯例是把这个列表放在一个requirements.txt文件中:

    (tutorial-env) $ python -m pip freeze > requirements.txt
    (tutorial-env) $ cat requirements.txt
    novas==3.1.1.3
    numpy==1.9.2
    requests==2.7.0
    
    • 1
    • 2
    • 3
    • 4
    • 5

    然后,可以将requirements.txt提交给版本控制,并作为应用程序的一部分发布。用户可以使用install -r安装所有必要的包:

    (tutorial-env) $ python -m pip install -r requirements.txt
    Collecting novas==3.1.1.3 (from -r requirements.txt (line 1))
      ...
    Collecting numpy==1.9.2 (from -r requirements.txt (line 2))
      ...
    Collecting requests==2.7.0 (from -r requirements.txt (line 3))
      ...
    Installing collected packages: novas, numpy, requests
      Running setup.py install for novas
    Successfully installed novas-3.1.1.3 numpy-1.9.2 requests-2.7.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    第23个520情人节,女程序猿送男朋友什么?
    QT 自定义QGraphicsItem 缩放后旋转 图形出现漂移问题
    自制网页。
    引入移码的目的
    集合类不安全
    手撸nano-gpt
    考虑源荷不确定性的热电联供微网优化(Matlab代码实现)
    神经网络科普视频下载,神经网络视频教程
    C语言经典算法实例5:验证哥德巴赫猜想
    ubuntu 配置nacos开机启动
  • 原文地址:https://blog.csdn.net/zyw2002/article/details/128046436