Python运行环境分析

Python运行环境分析

  1. 引言

    Python 作为一门非常强悍的语言,目前在多个领域内发展的如火如荼。Python的发展离不开其庞大的第三方库。因为各种原因,我们可能或在多个场景下使用不同的Python及其第三方包。为了实现隔离和权限,Python需要在不同的环境下运行,因此,本文想来分析下Python在各个场景下的运行环境设置。

  2. Python运行的三种环境

    1. 全局运行环境

      这种场景一版都是使用在生产部署的时候,直接使用系统安装的Python及其第三方包。

      此种场景下的操作步骤如下:

      ​ 1:采用root用户在opt目录下下载一个Python3或者Python2的二进制包。

      ​ 2:通过在系统环境变量PATH里面设置Python和pip的查找路径,每个pip都对应一个Python

      ​ 3:使用上一步配置好的pip来为Python安装全局第三方包。

    2. 用户运行环境

      1. 用户运行环境分两种情况,一种是采用root账户已经安装好全局Python编译器,可以直接使用,另一种是连Python编译器都需要安装。第二种情况和全局运行环境类似,只不过使用的用户不同而已。这里主要说的是第一种。

      2. 基于全局Python解释器的非root权限安装第三方包

        此时,系统中已经存在Python解释器,只是缺少第三方包,如果第三方包已经安装完毕,则也可以直接使用,不存在权限问题。假设当前用户不具备sudo权限,通过全局pip是没有权限安装Python第三方包的。此时可以将第三方包安装在个人目录下,具体命令为:

        1
        2
        3
        $ which pip  # 查看pip执行文件位置
        $ pip -V # 看成此pip对应的Python编译器,通过pip安装的第三方包,会安装到这个Python编译器上
        $ pip install --user pandas -i https://pypi.douban.com/simple # 安装pandas第三方库到当前用户下

        通过上面操作安装的Python第三方包并不会出现在系统的第三方包目录,而是会在当前用户的家目录下面的.local目录下。.local目录为隐藏目录,默认使用用户身份安装第三方包时,会自动创建。此时当前用户能调用的模块包含系统Python第三方目录下的模块和当前用户.local目录下的模块。

        注意,此种场景下,并没有重新安装Python解释器,仅仅将某些第三方包安装在有权限的用户目录下了。

    3. 基于虚拟环境的Python运行环境

      这种场景是隔离度最高的方式,不会影响其他人的操作。

      基于虚拟环境的Python运行环境使用的其实是副本的概念,就是将某个Python环境复刻一份供你一个人使用。此时复刻的包括Python编译器和第三方包(继承)。每个人都可以复刻一份专属于自己的虚拟环境来进行开发,如果系统中有多个Python,可以选择不同的Python环境来进行复刻。

      创建Python的虚拟环境的工具有很多,推荐使用virtualenv+virtualenvwrapper, virtualenvwrapper是virtualenv的扩展包,命令更加简单。

  3. 解决思路

    在项目开发中,经常发现有小伙伴因为不熟悉这三种场景,导致经常出现各种问题,例如,通过pip安装成功了pandas,但是却发现无法引入;系统中有多个pip和多个python,不知道使用哪个。

    针对此类问题,只需要找到pip和其对应的Python编译器,即可成功实现使用不同路径下的pip为对应的Python编译器安装第三方包。