如何以智能方式安装 Python

Python易于使用,对初学者友好,功能强大,几乎可以为任何应用程序创建强大的软件。

但与任何其他软件一样,Python 的设置和管理可能很复杂。

在本文中,我们将介绍如何正确设置 Python。

您将学习如何选择合适的版本、如何防止多个版本相互干扰以及如何避免出现尖锐问题和潜在的陷阱。

选择正确的 Python 版本和发行版

在任何一个时间点,Python 的几个不同版本都在积极接收更新或至少是安全修复。

您可能认为选择最新版本是有意义的。

但是,为了与第三方模块兼容,选择比当前版本落后一个主要修订点的 Python 版本始终是最安全的。

在撰写本文时,Python 3.12 是最新发布的版本。因此,最安全的做法是使用最新更新的 Python 3.11。

您可以随时以可控的方式试用最新版本(稍后会详细介绍),但回退一个版本可以保证与常见的第三方 Python 包的最佳兼容性。

Python 和 Linux 一样,也有各种发行版。但与 Linux 不同的是,Python 提供了一个您可以随时使用的黄金标准“官方”版本:CPython,这是Python.org上 Python 软件基金会提供的版本。

这是最安全、兼容性最广泛的发行版,没有人会因为使用它而被解雇。您可能还想研究其他针对特定用例的 Python 发行版,但我们不会在这里讨论它们。

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

大多数现代操作系统默认使用 64 位版本的 Python。Windows 用户可以在 64 位 Windows 上运行 32 位版本的 Python,但性能会略有下降。

32 位 Python 和 32 位应用程序通常一次只能访问 4GB 内存。64 位应用程序没有此限制,因此许多 Python 数据分析和机器学习工具在 64 位版本中效果最佳。有些工具仅提供 64 位版本。

只有在你只能使用 32 位版本的 Windows 时,或者你需要使用仅在 32 位版本中提供的第三方模块时,你才应该选择 32 位版本的 Python。由于这种情况越来越少见,因此 64 位是常见的选择。

如何在 Windows 上安装 Python

Python 在 Windows 上的安装方式与任何其他应用程序类似,通过安装程序引导您完成安装过程。

默认情况下,Windows 版 Python 安装程序会将其可执行文件放在用户AppData目录中,这样就不需要管理权限了。

如果您是系统上的唯一用户,您可能希望将 Python 放在更高级别的目录中(例如C:\Python312),以便于查找。Windows 安装程序允许您指定目标目录。

为 Windows 选择正确的 Python 安装程序

Python.org 为 Windows 提供了各种版本的 Python。

除了前面提到的 32 位(“x86”)和 64 位(“x86-64”)版本外,您还可以选择可嵌入的 zip 文件、可执行安装程序和基于 Web 的安装程序。以下是这些版本的全部内容:

可执行安装程序:只是一个.exe运行 Python 安装过程的文件。这是最简单的默认选择,也是最常用的。

基于 Web 的安装程序:与可执行安装程序相同,只是它会单独下载执行安装所需的部分。这大大减少了实际安装程序的大小,但当然,它需要网络连接。

可嵌入的 zip 文件:是 Python 运行时的独立、最小副本,可放在单个文件夹中,没有任何依赖项。

当您想要手动分发 Python 应用程序,或者需要快速、一次性安装 Python 来动态测试某些东西时,捆绑它很有用。

但是可嵌入的 zip 不包含pip完整安装附带的任何其他有用工具,因此仅供专家使用。

使用 Windows 包管理器安装 Python

另一个选择是使用 Windows 包管理系统之一来安装 Python。

Windows 11 现在预装了微软自己的包管理解决方案Winget。(如果您使用的是 Windows 10,则可以手动安装winget。)

您可以通过指定版本从 Python.org 安装 Python 的官方版本,例如: winget install Python.Python.3.11,或者使用winget search Python.Python来查找可用的版本。

其他 Windows 包管理工具也提供 Python。.NET 的包管理器 NuGet在其存储库中提供 Python。但是,提供 Python 主要是为了将其用作.NET 应用程序中的组件,而不是作为一种安装 Python 独立实例以供一般使用的方式。

如果您以常规方式安装 Python,您可能会发现 Python 实例更易于管理。

Chocolatey是一款更通用的 Windows 包管理系统,也提供 Python。

Chocolateywinget是一种运行 Python 安装程序和跟踪系统中 Python 语言运行时存在的便捷方式,因此它是比 NuGet 更好的选择。

但是,最好避免在同一系统上混合使用 Chocolatey 安装、Python 安装和手动安装。最好总体上确定一个包管理解决方案并坚持使用。

如何在 Linux 上安装 Python

由于 Linux 发行版差异很大,在 Linux 上安装 Python 的典型方法是使用特定发行版的包管理器。

例如, Ubuntu和Fedora安装 Python 的过程完全不同。在 Linux(和 macOS)上,安装的目标目录通常是预先确定的,并基于 Python 版本号,例如/usr/bin/python3.X在 Linux 上,或/usr/local/opt/python/在 Mac 上。

另一个用于管理多个 Python 安装的 Linux 工具是pyenv。它允许您安装多个并行的 Python 版本,并在它们之间自由切换,无论是系统范围还是每个项目。

请注意,它pyenv会构建您为系统安装的每个版本的 Python,因此您需要事先安装 Python 构建依赖项。

避免处理 Linux 包管理器的复杂性的一种方法是使用容器化的 Python 运行时。容器独立于系统的其余部分运行,因此您不必担心不同的 Python 运行时会相互干扰。

但是,如果您的工作流程尚未包含容器,则需要投入时间和精力来熟悉 Docker。(请注意,您也可以在 Windows 上使用容器化的 Python。)

如何在 macOS 上安装 Python

传统上,macOS 会预装一个版本的 Python,但最新版本不会高于 Python 2.7。

当 Python 3 问世时,这带来了问题,因为这两个版本经常发生冲突。

官方 Python 文档对此有一些说明,但除了确保您使用所需的 Python 实例的正确路径之外,它没有提供任何更详细的建议。

在 macOS 上管理 Python 运行时的常用方法是通过Homebrew 包管理器,这是一个非官方(即不是 Apple 创建的)项目,已成为 Mac 上包管理的事实标准。

Homebrew 提供了一致的界面,用于下载、安装、管理和删除 Python 和其他第三方命令行应用程序。

Python 安装技巧和应避免的陷阱

我们讨论了在 Windows、Linux 和 macOS 上安装 Python 的基础知识。

最后,我们来总结一下三种需要更多技巧的常见安装场景。 

如何不安装 Python 包(以及如何安装)

一旦设置了 Python 版本的基础安装,就不要开始直接在其中安装软件包pip—不,即使您只打算在一个项目中使用 Python。

设置您的项目目录,在其中安装 Python 虚拟环境,然后将软件包安装到这些虚拟环境中。这样,基础安装就会保持干净。

要以高级方式管理具有虚拟环境和依赖项的多个项目,请查看Poetry 项目。Poetry 提供了一个命令行工具,用于高级管理虚拟环境和依赖项。

如何并排安装多个 Python 版本

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

始终将每个版本安装在不同的目录中。

确保所有系统路径都配置为首先指向您想要默认运行的版本。

运行多个 Python 版本强烈支持每个项目都使用虚拟环境。激活虚拟环境后,项目上下文中的所有 Python 活动都会自动定向到正确的 Python 版本。

对于 Windows 用户来说,另一个选项是py启动器应用,它允许您控制在安装多个 Python 版本时使用哪个版本。

在 Python 安装过程中,您可以选择安装启动器py,这是一个小型可执行文件,允许您(通过命令行标志)选择要为给定脚本使用哪个版本的 Python。

例如,要运行pipPython 3.11,您需要输入py -3.11 -m pip。

如何在虚拟环境中升级 Python 版本

Python 的小版本升级(例如,从 Python 3.11.2 升级到 Python 3.11.3)通常相当容易。

在 Windows 上,安装程序会检测现有版本并对其进行升级。

在 Linux 和 macOS 上,安装程序或包管理器通常会执行相同的操作。

但是,您创建的任何虚拟环境也需要升级;它们不会自动升级。要在虚拟环境中升级 Python,只需导航到虚拟环境目录并输入venv --upgrade。再次注意,这仅适用于小点修订升级。

如果您要执行重大点修订升级,例如从 Python 3.11 升级到 Python 3.12,最好的办法是使用venv在项目目录中创建一个新的、单独的虚拟环境子目录,将任何依赖项重新安装到其中,然后切换到使用新的虚拟环境。

大多数支持 Python 的 IDE(例如 Microsoft Visual Studio Code)都会检测项目中的多个虚拟环境并允许您在它们之间切换。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/36061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记——动态路由——RIP(附加度量值配置)

六、附加度量值配置 RIP协议cost开销值:默认值为0,路由信息每传递一次,值增加1,最大15,(路由器不能超过15台)16代表不可达。 入接口附加度量值 rip metricin 5 //可以修改开销改变路径。只能增加,不能减小 …

count(*) over (partition by ……)用法详解

select id,count(*) over(partition by pro_id) from sal; 以pro_id分组,统计分组后每个pro_id的记录总数及对应的id; 类似还有count(*) over(order by ……)、sum(amount) over(partition by ……)等,略有区别

降低企业运营成本的API服务有哪些?

通过API服务,企业可以实现许多功能和服务的自动化和优化,从而有效降低企业的运营成本。API服务可以帮助企业简化流程、减少人工操作、提高效率,并提供数据支持和决策依据,从而实现成本的有效控制和降低。无论是人力资源管理、客户…

【D3.js in Action 3 精译】1.2.2 可缩放矢量图形(一)

译注 由于 1.2.2 小节介绍 SVG 的篇幅过多,为了方便查阅,后续将分多个小节依次进行翻译。为了确保整个 1.2.2 小节的完整性,特意将上一篇包含的 SVG 小节的内容整理出来重新编排。敬请留意。 1.2.2 SVG - 可缩放矢量图形 可伸缩矢量图形&…

kaoYan-English

英语的提高是个日积月累,可以花一个月时间突击政治。但英语不可。关键在于单词和阅读理解 提高英语成绩的捷径,多做阅读题。阅读理解的分值高,阅读理解在巩固词汇,培养语感有不可替代作用。 选资料,贴合考研难度的&a…

x264 编码器 i_intra_cost 计算过程

介绍 是uint16_t类型指针变量,用来存储每个宏块的帧内代价值,在 frame.h 文件中x264_frame_t结构体中声明。在*frame_new 函数中将lowres_costs[0][0]指向给i_intra_cost,并 memset 为-1;//代码有删减 frame->i_intra_cost = frame->lowres_costs[0][0]; memset( fra…

Raspbian命令行连接WiFi网络

Raspbian命令行连接WiFi网络 1. 源由2. 环境3. 信号4. 连接5. 检查6. 断开 1. 源由 “懒人”多福,是什么原因,大家知道不,哈哈。 如果大家关注过之前《Ardupilot开源代码之Rover上路计划》,为了笔记本电脑在不断网的情况下进行配…

Rust 中使用 :: 这种语法的几种情况

文章目录 1. 访问模块成员:2. 访问关联函数或静态方法:3. 访问 trait 的关联类型或关联常量4. 指定泛型类型参数 1. 访问模块成员: mod utils {pub fn do_something() { /* ... */ } }let result utils::do_something();2. 访问关联函数或静…

【Spring Cloud Alibaba AI】简单使用

本文基于官方文档。 Spring AI 官方文档:Spring AI :: Spring AI Reference 中文文档:Spring AI 简介 - spring 中文网 (springdoc.cn) Spring AI 是 Spring 官方社区项目,旨在简化 Java AI 应用程序开发,让 Java 开发者像使用…

达梦数据库死锁排查和解决

达梦数据库死锁排查和解决 链接: 达梦数据库死锁排查和解决

道路元素位置和方向的坐标系统: 点 线 面 连接点

道路元素位置和方向的坐标系统: 下图道路元素在地球坐标系中的位置,该位置由三个坐标轴(x, y, z)组成的笛卡尔坐标系来确定。这种描述特别适用于三维建模和地理信息系统(GIS)中,其中道路被视为一个三维模型…

XSLT 转换:深入解析与实际应用

XSLT 转换:深入解析与实际应用 引言 XSLT(Extensible Stylesheet Language Transformations)是一种用于将XML文档转换为其他格式(如HTML、XML或文本)的语言。它由W3C制定,是XML技术栈的重要组成部分。XSLT转换不仅限于格式转换,还可以用于数据提取、报告生成、复杂计算…

陈皓(左耳朵皓子):程序算法与人生选择

写于2012,虽然过去很久了,现在读来依然很受启发,或许这就是好文的标准吧,不随着时间的流逝而减弱。 每年一到要找工作的时候,我就能收到很多人给我发来的邮件,总是问我怎么选择他们的offer,去腾…

使用 position:absolute; 定位的元素在ios上被遮盖

在ios上一个元素使用position:absolute;定位后,被其它元素遮盖 在使用absolute的元素上加一行代码 -webkit-transform: translate3d(0, 0, 0);

[渗透测试] 任意文件读取漏洞

任意文件读取漏洞 概述 漏洞成因 存在读取文件的功能(Web应用开放了文件读取功能)读取文件的路径客户端可控(完全控制或者影响文件路径)没有对文件路径进行校验或者校验不严格导致被绕过输出文件内容 漏洞危害 下载服务器中的…

Linux下反汇编相关工具

Linux下反汇编相关工具 程序出现崩溃堆栈,如果事先没有装调试包或者以调试模式编译,则打出的堆栈中看不到函数名,或者显示 n/a。此时往往需要根据 backtrace 打印的函数偏移地址来确定调用的是什么函数,这里就涉及到比较高级的调…

Java8新特性Stream

Stream 是 Java 8 引入的一种新的抽象,用于处理集合类 (Collection) 的数据。Stream 并不存储数据,而是按需计算数据。Stream 操作有两个重要特性: 流水线操作 (Pipelining):Stream 操作可以链式调用,形成一个流水线&…

springboot项目的打包问题(常用)

在java的日常开发中,离不开项目的打包,怎么将项目打包,并部署到服务器,这是每一个java程序猿都需要会的知识点,我根据自己的经验写这篇文章,希望可以帮助到有需要的人。 知识铺垫:在java项目中…

第十五站:Java琥珀——持续集成与交付的自动化之路

Java作为一种广泛使用的编程语言,它的生态系统非常庞大和成熟,其中包括了持续集成与持续交付(CI/CD)的工具,这些工具对于现代软件开发至关重要。下面我将结合Java源代码,简要介绍Jenkins和GitLab CI/CD如何…

Compiled blocks

目录 一,编译块 Compiled Block 二,编译循环 三,调用编译块 Invoke 四,Tips and notes 一,编译块 Compiled Block 在几何体网络内,可将网络的一部分放入编译块(compiled block)内…