这是正确的安装方式吗?
./configure
make
make install
如果不行,我该怎么办?
./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
更改为您需要的版本(例如version=2.7.1
或version=3.6.0
)。sudo make install
而不是 altinstall
来将其设置为默认的 Python 版本。 - Shagun SodhaniCXX=g++ ./configure
。 - srjapt-cache search libreadline
以获取其他选择项。 - Pierre de LESPINAYpython -V
命令来检查已安装的版本。 - Lukas Liesissudo apt-get install python
,更复杂的答案是"如何安装_最新版本_的Python",暗示着需要从源代码进行安装。无论在哪个操作系统上,除非你安装来自第三方的预编译二进制文件,否则都会遇到相同的问题,而这在任何操作系统上都存在风险(并且在不同的操作系统上差异很大)。此外,这个答案是2012年的,如果需要更近期的建议,请参考https://askubuntu.com/questions/101591/how-do-i-install-the-latest-python-2-7-x-or-3-x-on-ubuntu/831075#831075。 - michael./configure --with-ensurepip=install
而不是./configure
。 - christianbueno.1"sudo apt-get install python2.7"
安装Python。如果不起作用,再试试这个方法。在这个过程中出了点问题,花了我3个小时来解决两个该死的问题,如果我没有尝试自己构建Python,本来是不应该有这些问题的。还是要感谢你为那些想要构建它的人提供了详细的答案。 :) - Xonshizsudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python2.7
python2.4
或 python3.6
等等,也是可用的。ppa
不是官方认可的,所以最安全的方式是从源代码构建。2. 这将导致一个全局的 Python,非 sudo
用户无法修改或安装软件包,而不是一个本地的 Python。3. 通过从源代码构建,可以在不同位置本地安装多个 Python。 - 0 _apt-get install python2.7
这会安装二进制的 Python2.7 而不是 Python... 很丑陋!! - Dhawalpython2.7
命令。可执行文件的位置为 /usr/bin/python2.7
。 - Nitinsudo apt-get install python-pip
,Python就可以正常工作了。 - v.oddou$ 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>
注意:在继续之前,您可能希望执行以下命令:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
请确切了解这些命令的实际作用;我假设您是进行全新安装。
安装Python 2.7非常简单:
$ sudo apt-get install python2.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...
$ 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
$ 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
$ 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...
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)
$ 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
中找到的可执行文件。环境变量PATH
是一个包含成千上万个文件的长列表。为了加快查找可执行文件的速度,shell使用了一个缓存哈希表进行快速查找。然而,这个缓存有可能过期,所以"hashed"告诉你它"记住"了这个命令映射到那个可执行文件。详细信息请参考:https://unix.stackexchange.com/questions/5609/how-do-i-clear-bashs-cache-of-paths-to-executables - michael2/3 -m pip install --upgrade pip
之前,我得到的是 pip --version: pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)
和 pip3 --version: pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
。现在如果我运行它们,我会得到 Traceback (most recent call last): File "/usr/bin/pip(3)", line 9, in <module> from pip import main ImportError: cannot import name main
。如果我使用sudo运行,它可以正常工作,并显示版本为 pip 18.0 from ...
。如何使它们再次在不使用sudo的情况下正常工作呢? - Gaiapip
(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可以解决”表示),那么跟踪它将会更加困难。 - michael12.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
#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
插件,使得安装具有不同模块需求的应用程序变得容易,避免冲突。 - RichVelbash --login
),这在某些情况下并不容易实现,比如使用Ansible。最适合交互式使用,对于脚本化服务器来说效果较差。 - RichVel这基本上是这个答案的镜像,只是稍微修改了一下开头
我建议使用pyenv。它自动化了构建过程,除了安装头文件依赖项(见下文)。您可以通过简单地说pyenv install 3.6.0
来构建和安装新版本(或旧版本)的Python。所有内容都以您的用户身份运行,因此您不必担心搞乱Ubuntu本身使用的Python。
与一些基于apt-repo的选项(例如deadsnakes)相比,它通常会在发布后的同一天工作,只需进行pyenv update
,因为您不需要等待其他人打包。查看您可以使用pyenv install --list
安装的所有版本。
安装构建CPython所需的工具和头文件(例如PyPy或Jython等特殊版本的Python可能有其他依赖项)。pyenv使用Git,它还可以构建/安装源代码分支,因此您可以安装最新的3.8版本,即从GitHub上获取的CPython的主分支:
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
# 可选的科学包头文件(用于Numpy、Matplotlib、SciPy等)
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
或~/.bashrc
文件中(安装脚本的末尾有提到):
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
重新启动您的shell(关闭并打开,或者执行exec $SHELL
)或重新加载配置文件(例如source ~/.bashrc
)
sudo
命令,既不需要对其进行安装。
安装您首选的Python版本(这将下载源代码并为您的用户构建它,无需输入)
pyenv install 3.6.0
将其设置为虚拟环境,以便以后可以创建其他环境
pyenv virtualenv 3.6.0 general
全局激活它(对于您的用户)
pyenv global general
随意使用Python/pip等。这是您的。
bash: pyenv: command not found
, fish: Unknown command 'pyenv'
$PATH
,应该有一个条目以.pyenv/bin
结尾。如果缺失,请确保你按照上面安装pyenv的第3和第4步(重新启动shell)。pyenv: no such command 'virtualenv'
pyenv commands
。
sudo apt-get install python-2.7 python-pip
。 - michaelsudo apt-get install python2.7
。这不仅更简单,也是唯一正确的答案,因为这是你能够通过apt-get安装Python模块及其依赖项的唯一方式。 - michael