如何在 Ubuntu 14.4 上将 Python 升级到 2.7.9?

moo*_*ima 34 python ubuntu-14.04

Ubuntu 14.4 内置了 Python 2.7.6,但我想将其升级到 2.7.9(它具有我想要的安全功能)。

这甚至可能吗?如果是这样,如何实现?

小智 31

ppa:fkrull/deadsnakes是python2.7的最新版本

sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

它将python升级到2.7.10

  • 请注意,依赖非官方软件包和/或 PPA,尤其是对于像 Ubuntu 中的 Python 这样基础的东西,会绕过重要的安全流程并可能导致许多问题。某些软件包明确依赖于官方软件包或版本。相反,您可能希望将 virtualenv 与更新版本的 python 一起用于您需要的应​​用程序。另请参阅 [在 Ubuntu 14.04 LTS 上升级到 Python 2.7.9,并制作您自己的 .deb 包进行部署 - Renoir Boulanger](https://renoirboulanger.com/blog/2015/04/upgrade-python-2-7- 9-ubuntu-14-04-lts-making-deb-package/) (4认同)
  • 这将升级**所有**您的软件包。 (3认同)

小智 17

您可以使用 pyenv:

 git clone https://github.com/pyenv/pyenv.git ~/.pyenv
 git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
Run Code Online (Sandbox Code Playgroud)

然后加

   #   for PyEnv
  export PYENV_ROOT="$HOME/.pyenv"
  export PATH="$HOME/.pyenv/bin:$PATH"
  export PATH="$HOME/.pyenv/shims:$PATH"
  eval "$(pyenv init -)"
Run Code Online (Sandbox Code Playgroud)

到 .bash_profile 然后你可以看到你想要安装或更新的 python 版本:

pyenv install --list
Run Code Online (Sandbox Code Playgroud)

想要 python 2.7.10?你可以试试:

 pyenv virtualenv 2.7.10
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助你。


jor*_*fus 14

我不喜欢以前建议从各种 PPA 安装的答案。无意冒犯,但我不认识建造它们的人,也不知道里面可能有什么。在任何必须有人向安全专业人员回答这种做法的环境中,这种做法都会令人不悦。

我刚刚发现从源代码下载 2.7.18 并并排安装它是一个好的开始。这篇很棒的博客文章涵盖了这些步骤。(在此处重新创建以符合堆栈溢出指南)

wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
tar xfz Python-2.7.18.tgz
cd Python-2.7.18/
./configure --prefix /usr/local/lib/python2.7.18
make
make install
Run Code Online (Sandbox Code Playgroud)

测试版本是否有效

/usr/local/lib/python2.7.18/bin/python -V
Python 2.7.18
Run Code Online (Sandbox Code Playgroud)

现在我已经安装了 2.7.18,我可以直接调用它或从我想要的任何地方对其进行符号链接。(或将其复制到 virtualenv 等中)

请注意,我是在收到不安全平台警告和 SNI 丢失警告的情况下来到这里的。这让我来到这里。我想很多人都是通过同样的途径发现这个问题的。如果这就是你在这里的原因,这个片段也可能对你有用

pip install urllib3[secure]
Run Code Online (Sandbox Code Playgroud)