Python (简体中文)

From ArchWiki
翻译状态:本文是 Python翻译。上次翻译日期:2022-04-29。如果英文版本有所更改,则您可以帮助同步翻译。

来自什么是 Python?

Python 是一种解释型、交互式、面向对象的编程语言。它包含了模块、异常、动态类型、高层级动态数据类型以及类等特性。在面向对象编程以外它还支持多种编程范式,例如过程式和函数式编程等 Python 结合了超强的功能和极清晰的语法。它带有许多系统调用和库以及多种窗口系统的接口,并且能用 C 或 C++ 来进行扩展。它还可用作需要可编程接口的应用程序的扩展语言。最后,Python 非常易于移植:它可以在包括 Linux 和 macOS 在内的许多 Unix 变种以及 Windows 上运行。

安装

Python 3

Python 3是最新并且处于活跃开发中的 Python 版本。Python 3的最近更新内容见 Python 的新变化

安装 python 软件包以获取当前版本的 Python 3。

若要从源代码编译测试版,请访问 Python 下载页面AUR 中也有 PKGBUILDS。若要安装 RC 版,请注意二进制文件将默认安装到 /usr/local/bin/python3.x 目录。如果不需要超级用户权限,并想要安装到主目录,可以考虑使用 pyenv 以替代。

Python 2

警告: Python 2已于2020年1月1日停止支持。见Sunsetting Python 2

Python 2 是该语言的老版本,它与 Python 3不兼容。若要查看两者区别的概述,见 Python2orPython3 文档的历史版本

尽管Python 2不再维护,但仍有一些软件包依赖它。Python 2对于维护、使用或移植传统 Python 2软件的开发者来说也可能是有用的。

安装软件包 python2 以获取Python 2。

Python 2 可以和 Python 3 同时运行,需要指定为 python2 才会运行此版本。

/usr/bin/python 默认链接到 python 3,所以使用 python 2的软件包应该用 /usr/bin/python2 替换 /usr/bin/python,要注意某些 python 2脚本也会错误地指定为python。用文本编辑器打开需要修改的程序或脚本,第一行可能为:

#!/usr/bin/env python

#!/usr/bin/python

将其中的 python 替换为 python2 即可。

另一种强制使用 python2 而不修改脚本的方法是明确地使用 python2 调用它,即

$ python2 my_script.py

最后,您可能无法控制脚本调用哪一个,但还有一种方法。它仅在脚本使用 #!/usr/bin/env python 时有效,在用 #!/usr/bin/python 时无效。这种手法依赖于 env 在 PATH 变量中搜索第一个对应的条目。

首先创建一个目录。

$ mkdir ~/bin

然后添加一个名为 'python' 的链接指向 python2 以及一个名为 'python-config' 的链接指向 python2-config 。

$ ln -s /usr/bin/python2 ~/bin/python
$ ln -s /usr/bin/python2-config ~/bin/python-config

最后把新的目录添加到 PATH 变量的 最前面

$ export PATH=~/bin:$PATH
注意: 这种环境变量的修改仅在当前终端会话中生效。

要检查 env 使用的是哪个 python 解释器,使用以下命令:

$ which python

另一个解决这个问题的方法是通过 Python/Virtualenv (简体中文) 来伪造一个脚本的运行环境。

实现的替代方案

The python package installs CPython, the reference implementation of Python. However, there are also other implementations available. These implementations are usually based on older versions of Python and are not fully compatible with CPython.

Implementations available on Arch Linux include:

  • PyPy — A Python implementation written in Python. It has speed and memory usage advantages compared to CPython.
https://www.pypy.org || pypy, pypy3
  • Jython — An implementation of the Python language written in Java. It can be used to embed Python scripting into Java programs or use Java libraries in Python programs.
https://www.jython.org/ || jython
  • micropython — Python for microcontrollers. It includes a small subset of the Python standard library and is optimized to run on microcontrollers and in constrained environments.
https://micropython.org/ || micropythonAUR
  • IronPython — An implementation of the Python programming language which is tightly integrated with .NET. It can use .NET libraries and allows .NET programs to use Python libraries.
https://ironpython.net || ironpython-gitAUR

More implementations exist. Some, such as Stackless, Pyston and Cinder are used internally at large technology companies. Others are historically notable but are no longer maintained due to improvements in the most popular implementations.

shell 的替代方案

python 软件包有一个交互式的 Python shell/REPL,可以用 python 命令启动。也可以使用以下 shell:

  • bpython — A fancy interface for the Python interpreter.
https://bpython-interpreter.org/ || bpython
  • IPython — A powerful interactive Python shell.
https://ipython.org/ || ipython
  • Jupyter — A web-based computation application powered by IPython.
https://jupyter.org/ || jupyterlab, jupyter-notebook
https://github.com/jonathanslenders/ptpython || ptpythonAUR

旧版本

AUR中有之前发布的 Python 版本,可以用于运行旧程序或测试程序的版本兼容性等:

AUR 中还有老版本使用的模块和库,可以通过带版本的 python 搜索。例如 "python26" 关键字可以搜索支持 2.6 的模块。

在AUR上搜索python<不带点的版本号>可以找到对应旧版本的额外模块和库,例如搜索python37可以找到3.7版本的模块。

软件包管理

可以使用以下多种方式安装Python软件包:

  • 官方软件仓库AUR — Arch仓库中有大量流行软件包可用。推荐以此安装系统级的软件包。
  • pip(1) — Python 官方的软件包安装器。可以使用 pip 安装来自 Python 包索引和其他索引的软件包。
https://pip.pypa.io/ || python-pip
  • pipx — 与 pip 类似,但为运行它的用户创建了一个孤立环境,用于每个应用程序及其相关软件包,防止与系统软件包冲突。专注于可以从命令行直接作为应用程序运行的软件包。可以使用 pipx 安装来自 Python Package Index 和其他索引的软件包。
https://pypa.github.io/pipx/ || python-pipx
  • Anaconda — 一个开源的软件包与环境管理系统,为Python程序而创建。可以使用 Conda 安装来自 Anaconda仓库的软件包。
https://docs.conda.io/projects/conda/ || anacondaAUR
  • Miniconda — Anaconda 的轻量级替代方案,它安装软件包管理器,但默认不安装科学计算软件包。
https://docs.conda.io/en/latest/miniconda.html || {Aur}}

如果使用 pip 安装软件包,请使用虚拟环境以避免将软件包安装到 /usr。也可以使用 pip install --user 以将软件包安装到user schemepipx和 Conda 将环境管理纳入了其工作流中。

若要查看 Python 软件包管理的最佳实践,见Python Packaging User Guide

历史上,easy_installpython-setuptools的一部分)用来安装以 Eggs 形式分发的软件包。easy_install 和 Eggs 已经被 pipWheels 取代。详见 pip vs easy_installWheel vs Egg

注意: Creating packages#PKGBUILD generators 中介绍了一些工具,可以将 pippacman 整合起来,为特定 PyPI 软件包自动生成 PKGBUILD。
提示: pipenv 可以为 Pipfilepipvirtualenv 提供独立的CLI。若要使用,请安装 python-pipenv

部件绑定

以下是可用的部件工具包绑定:

  • Tkinter — The standard Python interface to the Tk GUI toolkit.
https://docs.python.org/3/library/tkinter.html || python
  • Qt for Python (PySide2) — The official Python bindings for Qt5.
https://www.qt.io/qt-for-python || pyside2, pyside2-tools
  • Qt for Python (PySide6) — The official Python bindings for Qt6.
https://www.qt.io/qt-for-python || pyside6, pyside6-toolsAUR
  • pyQt — A set of Python bindings for Qt.
https://riverbankcomputing.com/software/pyqt/intro || python-pyqt5
  • PyGObject — Python bindings for GObject based libraries such as GTK, GStreamer, WebKitGTK, GLib, and GIO.
https://pygobject.readthedocs.io/ || python-gobject
  • wxPython — A cross-platform GUI toolkit for Python which wraps wxWidgets.
https://wxpython.org/ || python-wxpython

若要在 Python 中使用它们,可能还需要安装相关的部件工具包软件包(例如,必须同时安装 tk 才能使用Tkinter)。

提示与技巧

虚拟环境

python-virtualenv 是 Ian Bicking 编写的 Python 工具,可以为 Python 建立独立环境,可以安装软件包而不影响其它 virtualenv 环境或系统 Python 软件包,可以修改一个软件使用的 Python 版本。

Python 提供了创建隔离的虚拟环境的工具,可以将软件包安装到其中,而不会与其他虚拟环境或系统软件包发生冲突。虚拟环境也可以在同一个系统上运行不同版本的 Python。

详见 Python (简体中文)/Virtual environment (简体中文)

在 Python Shell 中实现 Tab 补全功能

Tab completion is available in the interactive shell by default. Note that the readline completer will only complete names in the global namespace. You can use python-jedi for a richer tab completion experience [1].

另见

官方

第三方