【问题标题】:Python 2.7.12 on Ubuntu 20.04 in PyEnvPyEnv 中的 Ubuntu 20.04 上的 Python 2.7.12
【发布时间】:2020-08-20 02:02:39
【问题描述】:

我有一些在 Python 2.7.12 上运行的旧网站,并且刚刚将我的开发机器更新到 Ubuntu 20.04。

我正在尝试让 PyEnv 安装 Python 2.7.12,但这似乎取决于 Ubuntu 20.04 中已删除的 libssl1.0-dev。

我得到错误:

Installing Python-2.7.12...
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

Please consult to the Wiki page to fix the problem.
https://github.com/pyenv/pyenv/wiki/Common-build-problems


BUILD FAILED (Ubuntu 20.04 using python-build 20180424)

听从here 的建议我跑了:

sudo apt-get remove libssl-dev
sudo apt-get update
sudo apt-get install libssl1.0-dev

我得到错误:

E: Package 'libssl1.0-dev' has no installation candidate

有没有办法做到这一点?如果是,那请问怎么做?

谢谢。

【问题讨论】:

  • 您是否考虑过在 Docker 容器中运行您的遗留应用程序?这样你就不需要用旧的依赖项弄乱整个系统了。
  • 谢谢。我以前从未使用过 Docker,但我愿意尝试。也就是说,看起来最旧的 Python 支持版本是 2.7.17 gitlab.com/python-devs/ci-images 除非我遗漏了什么?
  • 你正在寻找错误的一面。 hub.docker.com/_/python 是 python 图像的官方 docker hub

标签: python pyenv ubuntu-20.04


【解决方案1】:

正如 Klaus 提到的,您可以将 docker 映像用于 python 2.7,但 ssl 库非常重要,所以它没有安装候选者很奇怪。焦点包libssl-dev 列出here

【讨论】:

  • 我相信它被贬值了,有利于 libssl1.1-dev。我决定回滚到以前的操作系统,尽管大脑开始为此流血。不过感谢您提供的链接,我仍然可以尝试,因为我现在在回滚到 Ubuntu 18.04.4 时遇到了其他问题。
  • 我刚刚玩过 docker,感觉很棒。看起来这会为我解决这个问题,所以谢谢你们。
【解决方案2】:

您可以从以前的 Ubuntu 18.04 版本安装 libssl1.0-dev:

wget -P /tmp/ http://security.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0-dev_1.0.2n-1ubuntu5.5_amd64.deb
wget -P /tmp/ http://ftp.osuosl.org/pub/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5.5_amd64.deb
apt install /tmp/libssl1.0.0_1.0.2n-1ubuntu5.5_amd64.deb
apt install /tmp/libssl1.0-dev_1.0.2n-1ubuntu5.5_amd64.deb

它有效,但这不是推荐的方式。因为 libssl1.0 包以后不会收到安全更新了!也许 python 2.7.17 适合你?您可以通过 apt 安装它:

apt install python2

【讨论】:

  • 答案中的 2 个链接不再有效。 wget 的更新命令将是:wget -P /tmp/ http://archive.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0-dev_1.0.2n-1ubuntu5_amd64.debwget -P /tmp/ http://archive.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5_amd64.debapt install 的更新命令将是:sudo apt install /tmp/libssl1.0.0_1.0.2n-1ubuntu5_amd64.debsudo apt install /tmp/libssl1.0-dev_1.0.2n-1ubuntu5_amd64.deb
【解决方案3】:

我看不到让 PyEnv 与如此旧版本的 Python 一起工作的方法,因此按照 Klaus 和 Rafal 的建议选择使用 Docker。谢谢。

对于其他为此苦苦挣扎的人,here is a handy overview of the process

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 2021-05-02
    • 2020-09-01
    • 2021-05-04
    • 1970-01-01
    相关资源
    最近更新 更多