如何明智合理地安装Python?

译文
运维 系统运维 后端
本文介绍了如何在Windows、MacOS或Linux上启动并运行Python,以及如何避免这个过程中的几大陷阱。

[[318077]]

【51CTO.com快译】Python易于使用、对初学者友好且功能强大,可以为几乎所有应用开发可靠的软件。但它仍像是一款软件,这意味着安装和管理起来可能很复杂。

本文将逐步介绍如何正确地安装Python:如何选择合适的版本、如何防止多个版本相互冲突、如何避免这个过程中的种种潜在陷阱。

选择合适的Python版本和发行版

为了与第三方模块兼容,选择比最新版本早一点的Python版本始终是最稳妥的。

截止本文发稿时,Python 3.8.1是最新版本。因此,稳妥的做法是使用Python 3.7的最新更新版(这里是Python 3.7.6)。你始终可以有节制地(比如在虚拟机或测试机中)试用Python的最新版,但选择早一点的版本可以保证与常见的第三方Python软件包有最佳兼容性。

Python还有多种发行版,就像Linux一样。但与Linux不同,Python提供了你始终可以依赖的“官方”版:CPython,它是Python软件基金会提供的版本。这是最安全、兼容性最广泛的发行版。

你要做出的一个关键选择(尤其在Windows上)是使用32位还是64位版本的Python。最可能的答案是64位,原因有以下几个:

  • 大多数现代操作系统默认使用64位版本的Python。Windows用户可以在64位Windows上运行32位版本的Python,但性能会略微下降。
  • 32位Python和普通的32位应用程序一次只能访问4GB内存。64位应用程序没有此限制,因此许多面向Python的数据分析和机器学习工具在64位版本中效果最好。一些工具只有64位版本。

唯一应选择32位版本Python的情况是,如果你坚持使用32位版本的Windows,或者需要使用只有32位版本的第三方模块。

在Windows上明智合理地安装Python

Python在Windows上的安装与其他任何应用程序几乎一样,通过引导你完成安装过程的安装程序来完成。

默认情况下,Windows版的Python安装程序将可执行文件放在用户的AppData目录中,以便不需要管理权限。如果你是系统上的唯一用户,可能需要将Python放在更高级别的目录(比如C:\Python3.7)中,以使更易于查找。Windows安装程序让你可以指定目标目录。

为Windows选择合适的Python安装程序

Python.org为Windows提供了Python的许多不同版本。除了上述的32位(“x86”)和64位(“x86-64”)版本,你还可以在可嵌入zip文件、可执行安装程序和基于Web的安装程序之间选择。下面分别介绍一下:

  • 可执行安装程序是一个运行Python安装程序的.EXE文件。这是简单的默认选择,也是最常用的选择。
  • 基于Web的安装程序与可执行安装程序一样,只不过它单独下载执行安装所需的组件。这大大减小了实际安装程序的大小,不过当然需要网络连接。
  • 可嵌入zip文件是Python运行时环境的一个独立最小副本,没有依赖项,一个文件夹就装得下。如果你想手动分发Python应用程序,或需要快速一次性安装Python以快速测试,采用捆绑方案很有用。但是可嵌入zip不含有pip或完整安装随附的任何其他实用工具,因此仅供专家使用。

使用面向Windows的软件包管理器安装Python

另一个选择是使用面向Windows的软件包管理系统。面向.NET的软件包管理器NuGet在其存储库中提供了Python。然而,提供Python主要是为了将它用作.NET应用程序的组件,而不是以此安装供一般使用的独立Python实例。如果以常规方式安装Python,你可能会发现Python实例更易于管理。

更通用的Windows软件包管理系统Chocolatey也提供Python。Chocolatey是一种便携的方法,便于运行Python安装程序,并跟踪你系统中存在的Python语言运行时环境,因此比NuGet更好。然而,最好避免在同一个系统上混合搭配Chocolatey安装和Python的常规安装。

在Linux上明智合理地安装Python

由于Linux发行版本差异很大,在Linux上安装Python的典型方法是使用特定发行版的软件包管理器。比如说,Ubuntu和Fedora有全然不同的Python安装过程。在Linux(和MacOS)上,安装的目标目录通常是预先确定的,并基于Python版本号,比如Linux上的/usr/bin/python3.X或Mac上的/usr/local/opt/python/ 。

想避免处理复杂的Linux软件包管理器,一种方法是使用容器化的Python运行时环境。容器与系统其余部分隔离运行,因此不必担心不同的Python运行时环境会干扰对方。然而,如果你的工作流程还没有包括容器,需要花时间和精力来尽快上手Docker。(请注意,你也可以在Windows上使用容器化的Python。)

一款名为asdf-vm的工具在这里也很方便。你可以使用asdf-vm在类似Unix的系统(Linux和MacOS)上管理多个Python运行时环境,以及管理面向Node.js、Ruby、Elixir及许多其他语言的多个运行时环境。因此,如果你发觉自己应对Python之外的系统的多个版本,不妨考虑asdf-vm。

在MacOS上明智合理地安装Python

MacOS历来随带安装了Python版本,但从未比Python 2.7更新颖。Python 3问世后,这带来了问题,因为两个版本常常冲突。官方的Python文档对此有一些注释,但除了确保你为所需的Python实例使用正确的路径外,没有提供更详细的建议。

在MacOS上管理Python运行时环境的一种常用方法是借助Homebrew软件包管理器。 Homebrew为下载、安装、管理和删除Python及其他第三方命令行应用程序提供了统一的界面。

明智合理地安装Python软件包

一旦你完成了Python版本的基本安装,不要一开始就使用pip将软件包直接安装到其中——就算你计划将Python仅用于一个项目也别这么做。设置项目目录,将Python虚拟环境安装到其中,然后将软件包安装到这些虚拟环境中。这样一来,基本安装保持清洁。

若想要使用虚拟环境和依赖项大体管理多个项目的方式,请查看Poetry项目。Poetry提供了一个命令行工具,便于大体管理虚拟环境和依赖项。

并行安装多个Python版本

处理Python安装时最困难的一个问题是如何处理并行安装的不同版本的Python。这里有两条通用的经验法则:

  • 始终将每个版本安装在不同的目录中。
  • 确保任何系统路径都配置成首先指向你想要默认运行的版本。

运行多个Python版本强烈支持针对每个项目的虚拟环境。激活虚拟环境后,项目上下文中的所有Python活动都自动指向合适的Python版本。

如果Windows用户安装了多个版本Python、要控制使用哪个版本,另一个办法是使用py启动器应用程序。在Python安装过程中,你可以选择安装py启动器,这个小型可执行文件让你可以(通过命令行标志)选择针对特定的脚本使用哪个Python版本。比如,想为Python 3.7运行pip,就输入py -3.7 -m pip。

明智合理地升级Python

Python进行次要版本升级(比如Python 3.7.2升级到Python 3.7.3)通常容易得很。在Windows上,安装程序检测到现有版本后对其进行升级。在Linux和MacOS上,安装程序或软件包管理器通常执行相同的操作。

然而,你创建的任何虚拟环境也需要升级,它们不会自动升级。要在虚拟环境中升级Python,只需进入到虚拟环境目录,输入venv --upgrade。同样要注意,这仅对次要点版本升级(比如Python 3.7.2至Python 3.7.3)最有效。

如果你在执行主要版本升级,比如从python 3.7到python 3.8,最好的选择是使用venv,在项目目录中创建一个新的单独的虚拟环境子目录,将所有依赖项重新安装到其中,然后改而使用新的虚拟环境。大多数支持Python的IDE(比如Microsoft Visual Studio Code)会检测到项目中的多个虚拟环境,允许你在这些环境之间切换。

原文标题:How to install Python the smart way,作者:Serdar Yegulalp

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

责任编辑:庞桂玉 来源: 51CTO
相关推荐

2021-09-26 10:22:12

工具选型软件ERP软件

2016-02-29 10:01:59

iosbug合理

2014-05-22 16:32:48

bug查找bug

2024-09-14 11:26:05

云原生架构微服务

2014-05-22 10:54:27

iOS开发查找BUG

2022-07-04 18:58:43

智能合约区块链

2009-11-10 09:41:37

2023-12-27 14:19:33

Python内置函数开发

2019-08-01 11:31:32

2009-04-02 11:54:17

2009-12-18 18:49:48

2011-04-21 17:14:10

一体电脑

2024-06-04 07:52:04

2020-05-20 12:56:52

布线智能建筑网络

2013-01-17 09:21:13

大数据云计算数据分析

2023-09-19 23:17:43

Python缓存

2010-05-10 14:20:22

Unix引导串

2024-01-10 17:27:00

Python开发

2010-10-13 15:59:21

MySQL索引

2018-09-04 05:54:44

综合布线线缆网络
点赞
收藏

51CTO技术栈公众号