如何安装 Python 3.6?

dav*_*tgq 125 debian python software-installation

我想安装最新的 Python,在撰写本文时为 3.6。但是,存储库说 Python 3.4.2 是最新版本。

我试过了:

$ sudo apt-get update
$ sudo apt-get install python3

python3 is already the newest version.

$ python -V

Python 3.4.2
Run Code Online (Sandbox Code Playgroud)

为了在我的 Windows 工作站上升级到 Python 3.6,我只需下载一个 exe,单击“下一步”几次,就完成了。在 Debian Jessie 上安装 Python 3.6 的正确且官方接受的程序是什么?

GAD*_*D3R 190

您可以Python-3.6按如下方式在 Debian 8 上安装:

wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar xvf Python-3.6.9.tgz
cd Python-3.6.9
./configure --enable-optimizations --enable-shared
make -j8
sudo make altinstall
python3.6
Run Code Online (Sandbox Code Playgroud)

建议make altinstall按照官网使用

如果你想pip被包括在内,你需要添加--with-ensurepip=install到你的配置调用中。有关更多详细信息,请参阅./configure --help

警告:make install可以覆盖或伪装 python 二进制文件。make altinstall因此推荐而不是make install因为它只安装exec_prefix/bin/pythonversion.

一些包需要安装以避免一些已知问题,请参阅:常见的构建问题(更新)

Ubuntu/Debian:

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev
Run Code Online (Sandbox Code Playgroud)

libreadline-dev 的替代方案:

sudo apt install libedit-dev
Run Code Online (Sandbox Code Playgroud)

Fedora/CentOS/RHEL(aws ec2):

sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
openssl-devel xz xz-devel libffi-devel
Run Code Online (Sandbox Code Playgroud)

openssl-devel 的替代方案:

sudo yum install compat-openssl10-devel --allowerasing
Run Code Online (Sandbox Code Playgroud)

更新

您可以python-x.y.z.tar.gz这里下载最新版本。

要设置默认的 Python 版本并在它们之间轻松切换,您需要update-alternatives使用多个 Python 版本更新您的版本。

假设您已经python3.7在 debian stretch 上安装了,请使用该命令whereis python来定位二进制文​​件 ( */bin/python)。例如:

/usr/local/bin/python3.7
/usr/bin/python2.7
/usr/bin/python3.5
Run Code Online (Sandbox Code Playgroud)

添加python版本:

update-alternatives --install /usr/bin/python python /usr/local/bin/python3.7 50
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 40
update-alternatives --install /usr/bin/python python /usr/bin/python3.5 30
Run Code Online (Sandbox Code Playgroud)

python3.750优先级现在默认的Python中,python -V将打印:

Python 3.7.0b2
Run Code Online (Sandbox Code Playgroud)

要在它们之间切换,请使用:

update-alternatives --config python
Run Code Online (Sandbox Code Playgroud)

示例输出:

There are 3 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                      Priority   Status
------------------------------------------------------------
* 0            /usr/local/bin/python3.7   50        auto mode
  1            /usr/bin/python2.7         40        manual mode
  2            /usr/bin/python3.5         30        manual mode
  3            /usr/local/bin/python3.7   50        manual mode

Press <enter> to keep the current choice[*], or type selection number: 
Run Code Online (Sandbox Code Playgroud)

  • 免责声明:在像 Pi zero 这样的低功率设备上,这需要 **20+ 小时**。 (14认同)
  • 难道 debian 的人不推荐 `checkinstall` 吗?否则,明智的做法是将其安装到 `/usr/local` 或 `/opt`。 (6认同)
  • 根据`./configure --help` Python 3.6 默认安装到`/usr/local`。 (4认同)
  • 这个答案有问题(例如,SSL 模块不可用或 zlib 丢失)?参见:/sf/answers/2912079621/ (3认同)
  • 版本 `3.7` 是 [out](https://www.python.org/downloads/release/python-370b3/) (2认同)

小智 67

编者按:
警告:这个答案显示了如何从 Debian 的未来版本安装 Python。这将导致一个混合 Debian 版本的系统,并且影响的不仅仅是 Python——在大多数情况下,应用这些指令也会引入更新的库。对于更新的包,所产生的设置不会以预期的速度从安全更新中受益。这被称为FrankenDebian

考虑一下这个问题的其他答案,特别是这个显示如何从源代码构建,以及这个显示如何使用虚拟环境的答案。


Debian 的存储库中没有 Python 3.6,但测试有。

$ sudo nano /etc/apt/sources.list
# add
deb http://ftp.de.debian.org/debian testing main
$ echo 'APT::Default-Release "stable";' | sudo tee -a /etc/apt/apt.conf.d/00local
$ sudo apt-get update
$ sudo apt-get -t testing install python3.6
$ python3.6 -V
Run Code Online (Sandbox Code Playgroud)

您要求:

适当和正式接受的程序

但我必须指出,这不是官方解决方案,因为它使用测试存储库。

  • 不要尝试这个 - 你需要很长时间才能撤消 (8认同)
  • 请删除这个危险的答案 omg (3认同)
  • 截至 2018 年 9 月 15 日,它仍然存在风险:我在带有 Debian 扩展的 Raspberry Pi 上尝试了此操作,并在 Python 3.6 从测试升级后引入了更新的 libc6 和 libc6-dev 后遇到了分段错误。 (2认同)
  • 2019 年 4 月,仍然是“Bad Idea®©™”,我昨天做了,我应该害怕会被删除的一长串软件包,系统一团糟,重新启动后我不再有 X,我没有尝试修复它,而是安装了 Ubuntu。 (2认同)

Gre*_*bet 37

官方建议是“你实际上不需要更新的软件”

不要遭受闪亮的新东西综合症 - DontBreakDebian | Debian 维基

该页面上的大部分建议都是针对如果您希望软件在系统范围内可用时该怎么做,但我认为在这种情况下没有必要。

如果您获取 python 源代码,构建 3.6 解释器--prefix用于控制它结束的位置,然后使用virtualenv--python选项,那么您可以使用 python 3.6 而不会影响项目之外的任何内容。

这个过程可能是这样的:

$ cd ~
$ mkdir pythonroot
$ mkdir opt
$ mkdir app
$ cd opt
$ wget <python tarball>
$ tar -xvf <python tarball>
$ cd python-3.6
$ ./configure --prefix="$HOME"/pythonroot
$ make
$ make install
$ cd ~
$ cd app
$ virtualenv venv --python ~/pythonroot/bin/python
$ . venv/bin/activate
[venv]$ which python
/home/<user>/pythonroot/bin/python
Run Code Online (Sandbox Code Playgroud)

如果您打算这样做,您可能需要考虑Python脚本中的--enable-optimizations标志configure,它似乎启用了一些功能,如配置文件引导优化。根据一些基准测试,它增加了构建时间,但似乎使解释器的速度提高了 10% 左右。

  • 这遵循“实用性胜过纯度”的一般 Python 规则。我倾向于从 /opt/python-xyz 中的源包安装 python,然后从它自己的 virtualenvs 运行应用程序。 (5认同)
  • 在我看来,这是最好的答案。 (2认同)

sch*_*iba 13

您可能想看看pyenvhttps : //github.com/yyuu/pyenv。引用pyenvAmaral Lab的教程:

pyenv 以前称为 Pythonbrew,允许您更改全局 Python 版本、安装多个 Python 版本、设置特定于目录(项目)的 Python 版本,以及创建/管理虚拟 Python 环境(“virtualenvs”)。所有这些都是在 *NIX 风格的机器(Linux 和 OS X)上完成的,不依赖于 Python 本身,它在用户级别工作——不需要任何 sudo 命令。

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。- [来自评论](/review/low-quality-posts/173558) (3认同)

小智 11

我的首选方法是使用AnacondaMiniconda来保持最新版本的 python 和安装在 Debian 上的软件包。

所有这些都整齐地保存在一个文件夹中,如果您愿意,以后可以很容易地将其删除。安装程序还会将路径添加到您的 bashrc(如果您使用另一个 shell,请自行添加)。

它带有 pip,还有 conda,它是另一个包管理器,可以很好地处理更复杂的包,比如 numpy。Miniconda 是一个基本安装,而 Anaconda 是一个完整安装,包含许多包,主要用于数据分析。

迅速地:

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
Run Code Online (Sandbox Code Playgroud)

如果您不使用 bash 添加路径,请阅读并接受许可: export PATH="/home/$USER/miniconda3/bin:$PATH"

测试:

$ python --version
Python 3.6.0 :: Continuum Analytics, Inc.
Run Code Online (Sandbox Code Playgroud)

从 PyPi 安装:

# pip install fava
Run Code Online (Sandbox Code Playgroud)

从 conda 安装:

# conda install numpy
Run Code Online (Sandbox Code Playgroud)

如果要删除它,请删除~/miniconda3bashrc中的文件夹和路径。