如何在Ubuntu上安装最新的Python 2.7.X或3.X?

我想在Ubuntu上安装最新的Python tarball,从http://python.org/download/下载。

这是正确的安装方式吗?

./configure make make install 

如果没有,我该怎么做?

首先,安装一些依赖项:

 sudo apt-get install build-essential checkinstall sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev 

然后使用以下命令下载:

 version=2.7.13 cd ~/Downloads/ wget https://www.python.org/ftp/python/$version/Python-$version.tgz 

提取并转到目录:

 tar -xvf Python-$version.tgz cd Python-$version 

现在,使用您刚试过的命令安装,使用checkinstall代替,以便在需要时更容易卸载:

 ./configure make sudo checkinstall 

将版本更改为您需要的任何版本(例如, version=2.7.1version=3.6.0 )。

除非你真的有自己编译它的强烈愿望,否则首选的方法是使用DeadSnakes PPA来安装默认情况下不包含的Python版本:

 sudo add-apt-repository ppa:deadsnakes/ppa sudo apt-get update sudo apt-get install python2.7 

其他版本,如python2.4python3.6等也可用。

继续为最新的Ubuntu版本1记录这个:对于Ubuntu 16.04.1服务器,默认的Python是版本3.5,默认情况下安装Python 2.7。 在全新安装(注意,甚至没有python可执行文件):

 $ type python3 python2 python python3 is /usr/bin/python3 -bash: type: python2: not found -bash: type: python: not found $ python3 --version Python 3.5.2 $ python --version The program 'python' can be found in the following packages: * python-minimal * python3 Try: sudo apt install  

注意:在继续之前,你可能想要做一个快速的sudo apt-get updatesudo apt-get upgradesudo apt-get dist-upgrade (请注意这些命令实际上正在做什么;我假设这里全新安装。)

安装python 2.7非常简单:

 $ sudo apt-get install python2.7 

安装python 2.7的初始输出如下:

 $ sudo apt-get install python2.7 Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: libpython2.7-minimal libpython2.7-stdlib python2.7-minimal Suggested packages: python2.7-doc binutils binfmt-support The following NEW packages will be installed: libpython2.7-minimal libpython2.7-stdlib python2.7 python2.7-minimal 0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. Need to get 3,735 kB of archives. After this operation, 15.8 MB of additional disk space will be used. Do you want to continue? [Y/n] Y ...etc, etc... 

安装python 2.7后,

 $ type python3 python2.7 python3.5 python2 python python3 is /usr/bin/python3 python2.7 is /usr/bin/python2.7 python3.5 is /usr/bin/python3.5 bash: type: python2: not found bash: type: python: not found 

但是还有一个问题,因为你还不能通过pip安装PyPI模块 – 例如,如果你想要jupyter笔记本,或者最新的scipy或numpy(等),你需要安装pip然后pip install那些,并且仍然转向apt-get来安装任何所需的系统依赖项,例如graphviz或核心系统库。

 $ type pip3 pip2 pip bash: type: pip3: not found bash: type: pip2: not found bash: type: pip: not found $ python3 -m pip --version /usr/bin/python3: No module named pip 

所以要再次安装pip,就像sudo apt-get install python-pip一样简单:

 $ sudo apt-cache search -n pip | egrep '^python[0-9]*-pip' python-pip - alternative Python package installer python-pip-whl - alternative Python package installer python3-pip - alternative Python package installer - Python 3 version of the package 

你需要Python 2.7 pip python-pip和Python 3 pippython3-pip pip 。 通过apt-get安装肯定会安装所需的依赖项; 例如,这是安装pip2的输出:

 $ sudo apt-get install python-pip Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: binutils build-essential dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev libgomp1 libitm1 liblsan0 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7 libpython2.7-dev libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make manpages-dev python python-all python-all-dev python-dev python-minimal python-pip-whl python-pkg-resources python-setuptools python-wheel python2.7-dev Suggested packages: binutils-doc debian-keyring g++-multilib g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-multilib autoconf automake libtool flex bison gdb gcc-doc gcc-5-multilib gcc-5-locales libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg glibc-doc libstdc++-5-doc make-doc python-doc python-tk python-setuptools-doc The following NEW packages will be installed: binutils build-essential dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev libgomp1 libitm1 liblsan0 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7 libpython2.7-dev libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make manpages-dev python python-all python-all-dev python-dev python-minimal python-pip python-pip-whl python-pkg-resources python-setuptools python-wheel python2.7-dev 0 upgraded, 49 newly installed, 0 to remove and 0 not upgraded. Need to get 61.1 MB of archives. After this operation, 169 MB of additional disk space will be used. Do you want to continue? [Y/n] Y ...etc... 

一个有趣的事情发生在这样的结果:你现在有“标准”(和PEP推荐) python2python3 (它们只是python 2.7和python 3.5的符号链接):

 $ type python3 python2 python python2.7 python3.5 python3 is /usr/bin/python3 python2 is /usr/bin/python2 python is /usr/bin/python python2.7 is /usr/bin/python2.7 python3.5 is /usr/bin/python3.5 

你也想要sudo apt-get install python3-pip ; 在安装之前,您有:

 $ type pip pip2 pip3 pip is /usr/bin/pip pip2 is /usr/bin/pip2 -bash: type: pip3: not found $ python2 -m pip --version pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7) $ python3 -m pip --version /usr/bin/python3: No module named pip 

安装pip3

 $ sudo apt-get install python3-pip Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: libpython3-dev libpython3.5-dev python3-dev python3-setuptools python3-wheel python3.5-dev Suggested packages: python-setuptools-doc The following NEW packages will be installed: libpython3-dev libpython3.5-dev python3-dev python3-pip python3-setuptools python3-wheel python3.5-dev 0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded. Need to get 38.0 MB of archives. After this operation, 55.2 MB of additional disk space will be used. Do you want to continue? [Y/n] ...etc... 

结果版本:

 $ type python python2 python3 pip pip2 pip3 python is /usr/bin/python python2 is hashed (/usr/bin/python2) python3 is hashed (/usr/bin/python3) pip is /usr/bin/pip pip2 is /usr/bin/pip2 pip3 is /usr/bin/pip3 $ pip --version pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7) $ pip3 --version pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5) $ python2 -m pip --version pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7) $ python3 -m pip --version pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5) 

最后你可以开始安装所有你喜欢的python PyPI模块:你可能需要升级pip本身(pip2和pip3,分别;同样,如果通过python可执行文件调用pip也没关系或pip可执行文件,实际升级存储在/usr/lib ):

 $ sudo -H python2 -m pip install --upgrade pip ... $ sudo -H python3 -m pip install --upgrade pip ... 

您现在可以运行独立的pippython捆绑的版本(通过python -m pip {command} )。


[1] 历史回顾:较旧的Ubuntu只有Python 2.6,因此安装Python 2.7+的各种方法都是如此。 之后,在将Python 2.7添加到公共存储库之后,我们仍然遇到了使用最新修补程序安装最新Python 2.7的相同挑战,这也是(经常)必需的。 今天的情况要好得多/更简单:目前在公共回购中的当前Python 2.7和3.5(基本上只有人们关心的两个Python平台版本)非常稳定,所以现在我们真的只需要担心安装最新的python 模块 ,不是最新的python 。 所以现在Python的“最新版本问题” 部分已经从OS repos& apt转移到了PyPI和pip 。)

12.04

如果您正在关注Achu的答案 ,那么术语libread5-dev应该更改为libreadline-gplv2-dev 。 所以完整的命令是:

 sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev 

您也可以通过pyenv下载并安装它

 #Install Pyenv git clone https://github.com/pyenv/pyenv.git ~/.pyenv export PATH=~/.pyenv/bin:/usr/local/hadoop/bin/:$PATH echo 'export PYENV_ROOT="~/.pyenv"' >> ~/.bash_profile echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(pyenv init -)"' >> ~/.bash_profile #Install Python pyenv install 2.7.8 pyenv global 2.7.8 pyenv install 3.4.5 pyenv global 3.4.5 

主要是这个答案的一面镜子,附有调整介绍

我会推荐pyenv 。 除了安装头依赖项之外,它还会自动化构建过程(参见下文)。 您可以通过简单地说pyenv install 3.6.0来构建和安装新的(或旧的)Python版本。 一切都以您的用户身份运行,因此您不必担心弄乱 Ubuntu本身使用的Python 。

与一些基于apt-repo的选项(例如deadsnakes)相反,它通常会在pyenv update后的同一天发布,因为您不需要等待其他人打包它。 查看可以使用pyenv install --list安装的所有版本

安装pyenv

  1. 安装构建CPythons所需的工具和头文件(像PyPy或Jython这样的奇怪Pythons可能有其他依赖项)。 Git由pyenv使用,另外它还支持源代码分支的构建/安装,因此您可以安装3.8现在的任何东西,即CPython的主分支GitHub:

     sudo apt-get install -y git sudo apt-get install -y build-essential libbz2-dev libssl-dev libreadline-dev \ libsqlite3-dev tk-dev # optional scientific package headers (for Numpy, Matplotlib, SciPy, etc.) sudo apt-get install -y libpng-dev libfreetype6-dev 
  2. 运行安装程序脚本(安装原始作者的pyenv和一些非常有用的pyenv插件;有关更多信息,请参阅此处 )

     curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash 
  3. 将init行添加到~/.profile~/.bashrc (它在安装脚本的末尾提到它):

     export PATH="~/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" 
  4. 重新启动shell(关闭&打开或exec $SHELL )或重新加载配置文件脚本。 (例如source ~/.bashrc

完成!

设置环境

不要触摸系统Python(通常是一个坏主意;操作系统级服务可能依赖于某些特定的库版本等)创建自己的环境,这很容易! 更好的是,没有sudo ,因为它或pip安装!

  1. 安装您首选的Python版本(这将下载源代码并为您的用户构建它,无需输入)

     pyenv install 3.6.0 
  2. 如果你愿意,可以让它成为一个虚拟的人

     pyenv virtualenv 3.6.0 general 
  3. 使其全局活动(适合您的用户)

     pyenv global general 
  4. 用Python / pip等做你想做的事。这是你的。

如果你想稍后清理你的库,你可以删除virtualenv( pyenv uninstall general )或创建一个新的( pyenv virtualenv 3.6.0 other_proj )。 您还可以使每个目录的环境处于活动状态: pyenv local other_proj会将.python-version文件放入当前文件夹,每当您从它或其下调用Python或pip安装的Python实用程序时,它们都将被pyenv填充。

故障排除

  • bash: pyenv: command not foundfish: Unknown command 'pyenv'

    1. 检查$PATH ,应该有一个以.pyenv/bin结尾的条目。 如果它丢失了,请确保在上面的安装pyenv下遵循#3 AND#4 (重新启动shell)。
  • pyenv: no such command 'virtualenv'

    1. 如果您未使用安装程序脚本,则可能只安装了根pyenv软件包。 有关添加插件的说明,请参阅pyenv-virtualenv
    2. 如果您使用了安装程序脚本,请检查它是否显示为pyenv commands