显然我知道我可以使用源tar球安装,但是我宁愿不要从源代码安装,而要使用软件包管理器,因为那就是它的目的。我可以参考的地方肯定可以为最新的Python版本构建.deb文件(为什么python.org不在我的范围之外)。
我需要做些什么来引用它们,以及在升级到下一版本时会出现什么问题?
如果除了从源代码进行构建之外没有其他方法,是我可以安装一个(伪)软件包,该软件包将提供所需的所有依赖关系,而不必分别查找和安装每个软件包?这样我就不会得到:
The necessary bits to build these optional modules were not found:
_bz2 _curses _curses_panel
_dbm _gdbm _lzma
_sqlite3 _ssl _tkinter
readline zlib
#1 楼
Felix Krull运行的PPA可以为https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa上的许多Ubuntu版本提供几乎任何版本的Python(严重的是,有2.3.7版本用于生动的版本...)。 br />执行通常的操作:
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.5
它不会覆盖仍然符号链接为
python3.4
的现有python3
。 不要更改符号链接!显然,有许多系统功能无法与python3.5一起正常工作。
我尝试过此操作,但之后无法打开终端,软件更新程序,... ...
cd /usr/bin
sudo rm python3
升级到Wily会适应元包
python3
指向python3.5
。我不希望有任何损坏,但是在这一点上,不再需要外部存储库。因此,为了安全起见,可以在升级之前清除PPA。评论
因为菜鸟在那里,请不要符号链接!也没有符号链接只是意味着您需要从命令行键入python3.5才能运行python 3.5
–克里斯·霍克斯(Chris Hawkes)
16年1月24日,1:18
你能指出我,我该如何用3.4的点数来使用3.5?
–Groosha
16年4月14日在18:38
@ kondra007我遵循了来自pip.pypa.io/zh-cn/stable/installing的说明(请阅读那里的警告)以及这两个命令wget https://bootstrap.pypa.io/get-pip.py;。 sudo python3.5 get-pip.py给了我一个适用于python 3.5的pip,但pip3.4不再起作用。如果有人知道更好,请发表评论
– ndemou
16年7月24日在12:55
还要将python3.5设置为默认的〜$ vim〜/ .bashrc并添加此别名python = python3.5。然后〜$ source〜/ .bashrc
– Krishnadas PC
16-10-16在4:01
提示:如果找不到add-apt-repository:命令,请运行apt-get install software-properties-common python-software-properties进行安装
–秘银
16 Dec 16'在1:44
#2 楼
这个YouTube链接帮助我安装了它。步骤如下:
sudo apt-get install libssl-dev openssl
wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz
tar xzvf Python-3.5.0.tgz
cd Python-3.5.0
./configure
make
sudo make install
要检查是否安装了python,请键入
python3.5
else: sudo ln -fs /opt/Python-3.5.0/Python /usr/bin/python3.5
评论
OP表示他不想从源代码进行编译
–迈克尔·贝茨(Michael Bates)
16年2月9日在3:01
是的,你是对的。同样,从源代码进行编译可能会在以后引入一些依赖问题。但这就是我解决的方法。如果有更好的方法,我肯定会想知道。
–joydeep bhattacharjee
16年2月10日在7:04
考虑./configure --enable-optimizationsstackoverflow.com/questions/41405728/…
– warvariuc
17年1月11日在7:08
@CharlieParker,因为Python不是为特定的操作系统制作的。它可以在任何平台上运行。对于Linux,这意味着要么必须为每个Linux发行版(其中有很多)的每个版本编译和分发每个版本,要么它们分发源并让用户在将要使用的环境中自行编译它。用过的。后者更为可行。
– JimmyMcHoover
17年3月3日,11:24
您还需要从apt-get install build-essential中获得c / c ++编译器
–bato3
17-10-5在13:58
#3 楼
只需按照以下步骤(经过测试)进行操作即可:步骤1 –安装必需的软件包
在安装之前,请使用以下命令为Python安装必备组件。
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
步骤2 –下载Python 3.5.2
从python官方站点使用以下命令下载Python。您也可以下载指定版本的最新版本。
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
现在解压缩下载的软件包。
sudo tar xzf Python-3.5.2.tgz
/>第3步–编译Python源代码
使用以下命令集使用altinstall在系统上编译python源代码。
用于防止替换默认的Python二进制文件
make altinstall
。步骤4 –检查Python版本
使用以下命令检查安装的python最新版本。
cd Python-3.5.2
sudo ./configure
sudo make altinstall
来源。
评论
+1用于默认使用altinstall。在很多实际场景中,您只能使用一个版本。即使是默认使用Python3的系统,您也可能被迫反向安装Python-> Python2或添加Python2。
– m3nda
17年5月25日在15:41
我收到了此处所述的错误-bugs.python.org/issue31652必须运行sudo apt-get install libffi-dev才能解决它。
–NishānWickramarathna
19年8月13日在17:59
我还将添加sudo apt-get install liblzma-dev来启用lzma支持。
–v.grabovets
19年9月2日在10:16
#4 楼
据我所知,至少在docker容器中,可以肯定地使用python3。首先,我遇到了一个带有容器的ubuntu容器:
docker run -it --rm ubuntu:latest bash
,出于某种原因,它需要更新一些ubuntu东西,所以我做了(在容器内):
apt-get update && apt-get install -y build-essential git libjpeg-dev
,然后我简单地安装了python3和似乎它自动得到了python 3.5:
apt-get install python3
apt-get install python3-pip
,并测试pip是否正常工作,让我们下载一些东西:
pip3 install tensorflow
/>对于我来说一切正常。
重要说明:看来,如果您已经安装了python 3.4,则
apt-get
无法正常工作,因为它说您已经拥有了它。似乎这是我的问题之一,因为我是从tensorflow的docker映像(特别是apt-get install python3
)开始的,并且该映像中的某些内容(我认为它们已经有了python 3.4,但可能还有其他内容)不允许我这样做更新我的python以获得python 3.5。信用:我在询问以下内容时发现了这一点:https://stackoverflow.com/questions/42122826/can-one-use-python在基于tensorflow docker的docker容器中-3-5-
注意:一个人也可以只安装Anaconda。对于docker示例,可以执行以下操作:
docker pull continuumio/anaconda3
docker run -i -t continuumio/anaconda3 /bin/bash
从其官方网站:https://hub.docker.com/r/continuumio/anaconda3/
此解决方案将安装python 3.6,但我敢肯定,如果您在其中查看它,就可以得到python 3.5。
注意:您可能应该使用虚拟环境,例如virtual无论如何还是env或conda / anaconda,除非仍然使用docker。只是想提醒人们。
评论
“在Docker容器中”是一个非常笼统的语句:这全部取决于容器基于哪个映像,例如Ubuntu的哪个版本。此外,可能存在3.5或3.6这样的次要版本,而在一个Ubuntu版本中则不可用(例如14.04)。
–giorgiosironi
17年9月12日在8:28
#5 楼
pyenv此方法不使用
apt-get
,但是,我认为它是当今可用的最佳选择,因为它可以轻松地从源代码编译任何Python版本,因此您不必依赖任何PPA。 https://github.com/pyenv/pyenv
Pyenv允许您为单个用户管理多个Python版本而无需sudo,就像Node.js NVM和Ruby RVM一样。
安装Pyenv :
curl https://pyenv.run | bash
,然后添加到您的
.bashrc
中:export PATH="${HOME}/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
查找要安装的Python版本:
pyenv install --list
安装所需的python版本:
# Increase the chances that the build will have all dependencies.
# https://github.com/pyenv/pyenv/wiki/Common-build-problems
sudo apt build-dep python3
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 python-openssl git
# Build and install a Python version from source.
pyenv install 3.8.0
列出可用的Python版本:
pyenv versions
我们现在拥有:
* system (set by /home/cirsan01/.pyenv/version)
3.8.0
选择其他python版本:
pyenv global 3.8.0
python --version
python3 --version
两个输出:
Python 3.8.0
我们现在可以继续正常安装和使用软件包了:
pip install cowsay
python -c 'import cowsay; cowsay.tux("Python is fun")'
cowsay 'hello'
我们可以使用以下方法确认所有组件均已本地安装在干净的环境中:
python -c 'import cowsay; print(cowsay.__file__)'
which cowsay
每个项目的使用情况
在上一节中,我们了解了在全局设置中使用pyenv。
但是,您通常想要的是在每个项目的基础上设置特定的python和软件包版本。
首先像以前一样安装所需的Python版本。
然后在项目目录中,使用以下命令设置所需的python版本:
pyenv local 3.8.0
创建一个包含版本字符串的文件
.python-version
。现在让我们在本地为我们的项目安装一个软件包:TODO:似乎没有很好的方法:https://stackoverflow.com/questions/30407446/pyenv-choose- virtualenv-directory / 59267972#59267972
现在,当有人要使用您的项目时,他们将执行以下操作:
pyenv local
将Python版本设置为正确的版本。
相关线程:
如何使用apt-get安装其他Python版本?
https://unix.stackexchange.com/questions/9711/what-is-the-proper-way- to-manage-multiple-python-versions
https://stackoverflow.com/questions/10960805/apt-get-install-for-different-python-versions/59268046#59268046
在Ubuntu 18.04,pyenv 1.2.15上进行了测试。 >
#6 楼
在Ubuntu软件包中列出了许多可通过apt-get安装的较新的python发行版。例如,以下版本当前可用:
python2.7
python3.2
python3.4
python3.5
python3.6
可用性随Ubuntu版本的不同而有所不同。例如,3.5可用于Xenial,Yakkety和Zesty,而3.6可用于Yakkety和Zesty,但如果未启用通过apt-get获取它们,则必须启用Universe存储库。要检查您的Ubuntu版本的可用性,请查看上面的链接。
快速查看一下,表明该答案仍然有效,因为PPA甚至对于Trusty也具有3.6。
评论
Ubuntu Repo中可用的Python版本不是最新的Python版本。
– yaitloutou
17年2月13日在23:59
@yaitloutou问题说“较新”而不是“最新”一定要写一个更好的答案。
–古怪的长老
17-2-14在0:03
您是正确的,但是由于相对于未指定的内容而言较新,因此我将其解释为最新的:)
– yaitloutou
17年2月14日在0:08
@yaitloutou尽一切可能写一个更好的答案!我敢肯定,将不胜感激。
–古怪的长老
17年2月14日在0:18
我刚刚开始在这里活跃起来,而且我还在学习。对不起,如果您发现我对您的回答的评论令人反感
– yaitloutou
17年2月14日在0:43
#7 楼
我会考虑使用虚拟环境,而不是通过apt-get安装python版本。使用虚拟环境(请参见此处)是使用python开发的一种好习惯。它们使您可以将python环境与系统安装的python版本隔离开。
另外,在安装任何库(通过pip等)时不必获得sudo访问权限。
评论
我认为您需要先安装所需的python版本,然后才能在虚拟环境中使用它。
– Nzbuu
16年7月9日在11:15
在虚拟环境中安装所需版本的python,而不是通过在虚拟环境中运行“激活”脚本来更改与python相关的路径。
– devrimbaris
16年7月12日在7:16
这实际上正是我想要做的-在遵循@Nephente的回答之后,我尝试做的第一件事就是使用virtualenv -p指向它。但是它显示为“ ImportError:无法导入名称'HTTPSHandler'”。
–迈克尔·谢珀(Michael Scheper)
16年2月2日在18:51
为什么这被否决?虚拟环境通常可以正常工作。
–查理·帕克(Charlie Parker)
16 Dec 16'在7:05
如何在ubuntu中安装虚拟环境(如您的建议)但使用python 3.5?
–查理·帕克(Charlie Parker)
17年1月17日,0:16
#8 楼
Conda正在积极更新,并允许您在托管的venvs中安装多个python版本,而无需您自己设置所有版本。二进制扩展路径问题可能已经在它使用的许多anaconda管理的依赖项/ pip链中得到了解决。#9 楼
这是对Nephente的答案(即排名最高的)的更新,该答案截至2019年10月(根据CC BY-SA 4.0使用了摘录):Felix Krull运行的PPA提供了许多版本https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa上适用于许多Ubuntu版本的Python。但是,并非所有组合都受支持。如果不支持所需的组合,但是较早的Ubuntu版本可以使用所需的Python版本,则通常仍可以按以下方式安装(此处为Python 3.5的示例):
sudo add-apt-repository "deb http://ppa.launchpad.net/deadsnakes/ppa/ubuntu $(lsb_release -sc) main"
sudo apt-get update
sudo apt-get install python3.5 python3.5-venv
它不会覆盖您现有的Python 3.x,此后仍将其符号链接为
python3
。从这里可以下载旧版Ubuntu的安装软件包。我只是用它在Ubuntu 19.04下安装Python 3.5。
评论
askubuntu.com/questions/674586 / ...您是否收到过E:正则表达式“ python3.5”找不到任何软件包,因此无法通过apt-get install python3.5进行安装?
类似的问题:askubuntu.com/questions/310441/…
这里有一些好的建议:quora.com/…
@CharlieParker您是否尝试安装Anaconda?