如何安装Python 3.6?


107

我想安装最新的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

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


6
默认的Debian存储库包含专门为特定Debian版本编译的软件包。除了安全更新(最好是修复安全漏洞所需的最少更改)外,大多数软件的新版本可能要等到下一个主要发行版才可用,以避免潜在的不稳定。
phk

@phk在这种情况下,采用类似于pip的行为是否明智,即在未指定版本时默认为3.4.2,并允许用户显式请求带有标志的3.6?一个想法:)
dvtan

1
这意味着Debian员工必须为每个受支持的Debian版本维护所有这些Python版本。当然,它可以自动化,但仍然很多。同样,想要较新版本的高级用户也可以使用自定义存储库。有时,软件作者自己会为Debian和其他流行的Linux发行版维护它们,例如在Oracle VirtualBox中
phk

1
Python 3.6(尽管rc1)刚刚进入Debian实验性。可能需要稍微调整一下,才可以将其移植到Jessie。
Faheem Mitha

更新。这对我来说在Debian稳定版(jessie)上成功完成了建设。但是,这并不意味着它将成功安装并且不会引起问题。合理的下一步是在稳定的测试VM上对其进行测试。有人在乎吗?
Faheem Mitha

Answers:


66

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

您要求:

正确且正式接受的程序

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


62
警告:这会将您的系统升级到您正在运行的任何Debian版本(可能是“稳定”)加上“不稳定”加上“实验”的混合版本。这远比仅仅升级到不稳定的并从实验中挑选一些软件包的方法要差得多,或者(更好的是,从回端口和/或不稳定的和/或实验中保持稳定和挑选的软件包)。从此恢复几乎是不可能的。 除非您有很多使用debian和debian打包的经验,否则不建议使用
cas

8
编辑答案,将apt的默认版本设置为稳定。并删除了疯狂的“ apt-get升级”(将所有内容升级为不稳定或实验性可用的最新版本,但会导致删除另一个软件包的任何内容除外)。这将使此过程的危险性降低很多,但仍然不安全。仍然不建议新手使用。“实验性”不是临时使用的,而是用于怪异的,未经测试的,可能损坏的东西,即使在“不稳定”状态下也可能发生冲突或破坏。它也用作大型多包升级的临时区域。
cas

1
编辑的答案(现在为python 3.6.2)位于testing存储库中,对普通用户而言更安全。
m4p85r

4
不要尝试此操作-您需要花很多时间才能撤消
user3728501

1
这样做是否仍然像2017年8月(或12月)所建议的那样冒险?@cas编辑并发表评论后,现在还不清楚。有人可以跟进吗?
Brian Peterson

154

您可以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

建议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

libreadline-dev的替代方法:

sudo apt install libedit-dev

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

openssl-devel的替代方法:

sudo yum install compat-openssl10-devel --allowerasing

更新资料

您可以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

添加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

python3.750现在当务之急是默认的Python中,python -V将打印:

Python 3.7.0b2

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

update-alternatives --config python

样本输出:

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: 

5
debian家伙不推荐checkinstall吗?否则,将其安装到/usr/local或将是明智的/opt
伊万·阿尼舒克

3
根据./configure --helpPython 3.6的/usr/local默认安装。
Markus Strauss

2
对此答案有疑问(例如,SSL模块不可用或zlib丢失)?请参阅:stackoverflow.com/a/41601137/972128
kkurian

11
免责声明:在Pi 0等低功耗设备上,这需要20多个小时
AntoineLizée17年

2
版本3.7出来
蒂莫

32

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

不要患有闪亮的新东西综合症-DontBreakDebian | Pinkoi 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

如果要执行此操作,则可能需要考虑Python 脚本中的--enable-optimizations标志,该标志configure似乎启用了一些功能,例如配置文件引导的优化。它会增加构建时间,但根据某些基准,似乎可以使解释器速度提高10%左右。


5
这遵循“实用性胜过纯度”的一般Python规则。我倾向于从/ opt / python-xyz中的源软件包安装python,然后从其自己的virtualenvs运行应用程序。
zgoda

1
重要说明:如果您要执行以下操作:确保Python进程运行的任何用户都不能修改virtualenv
Gregory Nisbet

1
我认为这是最好的答案。
BringBackCommodore18年

感谢您的建议。过去,我使用系统范围的插件破坏了一些debian安装。
冻结

在我的安装中[venv]$ which python,不要给我/home/<user>/pythonroot/bin/python/home/<user>/app/venv/bin/python3而是……为什么?
冻结

12

您可能需要看看pyenvhttps : //github.com/yyuu/pyenv。引用pyenvAmaral Lab 的教程中的内容:

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


3
尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能会失效。- 评分
Archemar

您是对的,将更改答案。
schaiba

1
我认为他也打算也包括基本的命令行...
not2qubit

除与嵌入式设备打交道外,此方法效果很好。要“安装” python版本,请在本地下载并编译源代码。除此之外,pyenv是一个不错的选择,并且具有很大的灵活性,包括在不同目录中运行不同的python版本,以及处理非常烦人的PIP问题。
Brian Bulkowski

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

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

测试:

$ python --version
Python 3.6.0 :: Continuum Analytics, Inc.

从PyPi安装:

# pip install fava

从conda安装:

# conda install numpy

当您要删除它时,请删除文件夹~/miniconda3和bashrc中的路径。


在从源代码安装python遇到无尽问题之后,此版本非常完美!请注意,如果要使用virtualenv(wrapper)进行环境管理,则需要将miniconda库目录添加到中LD_LIBRARY_PATH。例如:添加export $LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/miniconda3/lib"到您的中.bashrc
jrast

“安装程序还会将路径添加到您的bashrc中”。这就是为什么我使用anaconda的主要原因。至少可以说,无声地掩盖现有的python环境是不健康的。
MiyaGiyagi '17

3

Debian的存储库中没有Python 3.6。这是当前Python3状态的快照:

wheezy (oldstable) (python): interactive high-level object-oriented language (default python3 version)
    3.2.3-6: all
jessie (stable) (python): interactive high-level object-oriented language (default python3 version)
    3.4.2-2: amd64 arm64 armel armhf i386 mips mipsel powerpc ppc64el s390x
stretch (testing) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: amd64 arm64 armel armhf i386 mips mips64el mipsel ppc64el s390x
sid (unstable) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: alpha amd64 arm64 armel armhf hppa hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 m68k mips mips64el mipsel powerpc powerpcspe ppc64 ppc64el s390x sh4 sparc64 x32

您可以在此处查看这些内容。

您可以从源代码安装3.6,也可以使用Linuxbrew之类的工具进行主目录安装。


3

有了这个

sudo echo "http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list

sudo apt-get update
sudo apt-get install -y python3.6

工作成功。

更多:将python3.6设置为默认值

sudo alias python=/usr/bin/python3.6

马上 :

python --version
Python 3.6

应该阅读sudo echo "deb http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list
歪曲

3
该答案与一年后接受的答案相同,但未能给出正确的命令。
To마SE

1

Python 3.6(尽管rc1)刚刚进入Debian实验性。我能够在Debian稳定版(jessie)上成功构建此版本。请参见下面粘贴的构建的最终步骤。

但是,这并不意味着它将成功安装并且不会引起问题。合理的下一步是在稳定的测试VM上对其进行测试。如果有人在乎,我可以尝试一下-或其他人可以尝试。

适当的发行版本应该很快就会进入Debian不稳定版本。

dh_builddeb -a
dpkg-deb: building package `python3.6' in `../python3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-venv' in `../python3.6-venv_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-stdlib' in `../libpython3.6-stdlib_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-minimal' in `../python3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-minimal' in `../libpython3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6' in `../libpython3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dev' in `../python3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dev' in `../libpython3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dbg' in `../python3.6-dbg_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dbg' in `../libpython3.6-dbg_3.6.0~rc1-1_amd64.deb'.
 dpkg-genchanges  >../python3.6_3.6.0~rc1-1_amd64.changes
dpkg-genchanges: including full source code in upload
 dpkg-source --after-build python3.6-3.6.0~rc1
dpkg-buildpackage: full upload (original source is included)
Now running lintian...
W: python3.6 source: newer-standards-version 3.9.8 (current is 3.9.6)
N: 56 tags overridden (26 errors, 27 warnings, 3 info)
Finished running lintian.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.