显然我知道我可以使用源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  


评论

askubuntu.com/questions/674586 / ...

您是否收到过E:正则表达式“ python3.5”找不到任何软件包,因此无法通过apt-get install python3.5进行安装?

类似的问题:askubuntu.com/questions/310441/…

这里有一些好的建议:quora.com/…

@CharlieParker您是否尝试安装Anaconda?

#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。