如何在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.1
或version=3.6.0
)。
除非你真的有自己编译它的强烈愿望,否则首选的方法是使用DeadSnakes PPA来安装默认情况下不包含的Python版本:
sudo add-apt-repository ppa:deadsnakes/ppa sudo apt-get update sudo apt-get install python2.7
其他版本,如python2.4
或python3.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 update
, sudo apt-get upgrade
和sudo 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 pip
的python3-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推荐) python2
和python3
(它们只是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 ...
您现在可以运行独立的pip
或python
捆绑的版本(通过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
-
安装构建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
-
运行安装程序脚本(安装原始作者的pyenv和一些非常有用的pyenv插件;有关更多信息,请参阅此处 )
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
-
将init行添加到
~/.profile
或~/.bashrc
(它在安装脚本的末尾提到它):export PATH="~/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
-
重新启动shell(关闭&打开或
exec $SHELL
)或重新加载配置文件脚本。 (例如source ~/.bashrc
)
完成!
设置环境
不要触摸系统Python(通常是一个坏主意;操作系统级服务可能依赖于某些特定的库版本等)创建自己的环境,这很容易! 更好的是,没有sudo
,因为它或pip
安装!
-
安装您首选的Python版本(这将下载源代码并为您的用户构建它,无需输入)
pyenv install 3.6.0
-
如果你愿意,可以让它成为一个虚拟的人
pyenv virtualenv 3.6.0 general
-
使其全局活动(适合您的用户)
pyenv global general
-
用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 found
,fish: Unknown command 'pyenv'
- 检查
$PATH
,应该有一个以.pyenv/bin
结尾的条目。 如果它丢失了,请确保在上面的安装pyenv下遵循#3 AND#4 (重新启动shell)。
- 检查
-
pyenv: no such command 'virtualenv'
- 如果您未使用安装程序脚本,则可能只安装了根pyenv软件包。 有关添加插件的说明,请参阅pyenv-virtualenv
- 如果您使用了安装程序脚本,请检查它是否显示为
pyenv commands
。