我想在Ubuntu上安装最新的Python tarball,可从http://python.org/download/下载。
这是正确的安装方式吗?
./configure
make
make install
如果没有,我该怎么办?
sudo apt-get install python2.7
。这不仅容易,而且是唯一正确的答案,因为这是您能够依次通过apt-get及其依赖项处理python模块安装的唯一方法。
我想在Ubuntu上安装最新的Python tarball,可从http://python.org/download/下载。
这是正确的安装方式吗?
./configure
make
make install
如果没有,我该怎么办?
sudo apt-get install python2.7
。这不仅容易,而且是唯一正确的答案,因为这是您能够依次通过apt-get及其依赖项处理python模块安装的唯一方法。
Answers:
首先,安装一些依赖项:
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
为所需的任何版本(例如version=2.7.1
或version=3.6.0
)。
sudo make install
而不是altinstall
将其设置为默认python版本
CXX=g++ ./configure
如的./configure发出警告,称G ++没有被发现
sudo apt-get install python
,更复杂的答案是“如何安装最新的 python”,含义是“从源头”。除非您从第三方安装预编译的二进制文件,否则在任何操作系统上都将遇到相同的问题,这同样在任何操作系统上都有风险(并且在不同的操作系统上差异很大)。这个答案也是从2012年开始的;有关更多最新建议,请参见askubuntu.com/questions/101591/…–
除非您真的有强烈的愿望自己编译,否则,首选方法是使用DeadSnakes PPA安装默认情况下不包含的Python版本:
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python2.7
也可以使用其他版本,例如python2.4
或python3.6
。
really have a burning desire to compile it yourself
ppa
没有得到官方认可,因此最安全的方法是从源代码构建。2.这将导致一个全局的python,非sudo
本地人,而不是非本地人,不能修改或安装软件包。3.通过从源代码构建,可以在不同位置本地安装多个python。
apt-get install python2.7
这将安装二进制python2.7而不是python ...难看!
继续为最新的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 <selected package>
注意:在继续之前,您可能需要做一个quick 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
但是仍然存在一个问题,因为您还不能通过以下方式安装PyPI模块pip
:例如,如果您想要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-pip
Python 2.7 pip
和python3-pip
Python 3 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;而且,是否pip
通过python
可执行文件或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的“最新版本问题”已部分移出操作系统存储库apt
并移入PyPI和pip
。)
$PATH
。env var PATH
是一长串目录,其中包含数千个文件。为了加快查找可执行文件的速度,shell使用缓存的哈希表进行快速查找。这可能会过时,所以“散列”让你知道它的“记忆”这个命令映射到可执行文件unix.stackexchange.com/questions/5609/...
pip
(2.7)和pip3
(3.X)完全安装/升级,而不仅仅是前-即,sudo apt-get install python-pip python3-pip
与sudo -H python2 -m pip install --upgrade pip
和sudo -H python3 -m pip install --upgrade pip
......或者,如果它确实是一个权限问题(由“它的工作原理与指示sudo”),那么跟踪起来将更加困难。
您也可以通过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-virtualenv
插件还包括对virtualenv的支持,使安装具有不同模块要求的应用程序变得轻松而不会发生冲突。
bash --login
),而不是总是很容易实现,例如从Ansible。最适合交互式使用,不太适合脚本服务器。
大多是经过调整的介绍,反映了这个答案
我会推荐pyenv。除了安装标头依赖项之外,它还使构建过程自动化(请参见下文)。您可以通过简单地说来构建和安装新(或旧)版本的Python pyenv install 3.6.0
。一切都以您的用户身份运行,因此您不必担心搞乱 Ubuntu本身使用的Python。
与某些基于apt-repo的选项(例如,死蛇)相对,它通常在a之后的同一天工作,pyenv update
因为您不需要等待其他人对其进行打包。查看可以安装的所有版本pyenv install --list
安装构建CPython所需的工具和标头(PyPy或Jython等奇特的Python可能还具有其他依赖项)。pyenv使用了Git,此外它还启用了源分支的构建/安装,因此您现在可以安装任何3.8,即CPython的master分支刚从GitHub下载:
sudo apt-get install -y git
sudo apt-get install -y build-essential libbz2-dev libssl-dev libreadline-dev \
libffi-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
在您的~/.profile
or中添加init行~/.bashrc
(在安装脚本的末尾提到):
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
重新启动外壳程序(关闭并打开或exec $SHELL
),或重新加载配置文件脚本。(例如source ~/.bashrc
)
做完了!
不用接触系统Python(通常是个坏主意; OS级服务可能依赖于某些特定的库版本等),使您自己的环境变得容易!更好的是,没有sudo
,因为它没有pip
安装!
安装您喜欢的Python版本(这将下载源代码并为您的用户构建它,不需要输入)
pyenv install 3.6.0
将其设置为virtualenv,以便以后可以创建其他文件
pyenv virtualenv 3.6.0 general
将其全局激活(针对您的用户)
pyenv global general
使用Python / pip等来做您想做的事情。
如果以后要清理库,则可以删除virtualenv(pyenv uninstall general
)或新建一个(en 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(重新启动外壳)。pyenv: no such command 'virtualenv'
pyenv commands
。
sudo apt-get install python-2.7 python-pip