Per*_*ell 24 python openssl pyenv ubuntu-22.04
全新安装到 Ubuntu 22(我在另一个分区中有 Ubuntu 20),最后一个部分我需要使用它来使 pyenv 正常运行。
当尝试pyenv install x.xx.x
失败时,出现以下错误:
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
我“尝试尝试”官方文档的建议:
我说“尝试”是因为我不明白我必须做什么。他们发出以下命令:
CPPFLAGS="-I<openssl install prefix>/include" \
LDFLAGS="-L<openssl install prefix>/lib" \
pyenv install -v <python version>
Run Code Online (Sandbox Code Playgroud)
但我不知道“openssl install prefix”是什么意思。我认为这是 openssl 安装目录,所以我这样做了:
openssl version -d
OPENSSLDIR: "/home/linuxbrew/.linuxbrew/etc/openssl@1.1"
Run Code Online (Sandbox Code Playgroud)
尽管我看到这个文件夹中没有任何文件夹include
或lib
子文件夹,但我仍然尝试这样做:
CPPFLAGS="-I/home/linuxbrew/.linuxbrew/etc/openssl@1.1/include" \
LDFLAGS="-L/home/linuxbrew/.linuxbrew/etc/openssl@1.1/lib" \
pyenv install -v 3.10.0
Run Code Online (Sandbox Code Playgroud)
最终出现相同的错误消息。
不得不说,我尝试了很多在其他地方找到的其他东西,但没有任何效果,但为了简单起见,我坚持使用官方指示。
如果您遇到同样的问题并且解决方案来自这些命令之外的其他地方,请分享!
非常感谢 :)
<openssl install prefix>
只是指基本路径或基本文件夹,只是 Homebrew 决定发明一个新名称,因为......好吧,我猜是一些非常重要的原因。
这部分只需替换为即可<openssl install prefix>
解决$(brew --prefix openssl)
。
请参阅我自己对下面问题的回答,看看它如何对我有用,但根据我所看到和尝试的所有不同解决方案来判断,每种情况可能都需要不同的解决方案。祝你好运!
Per*_*ell 18
关于到底是什么的疑问<openssl install prefix>
,我将编辑问题来澄清它。
关于如何成功安装 pyenv 版本,在尝试了我发现的有关该主题的所有内容之后,这是唯一对我有用的东西:
LDFLAGS="-Wl,-rpath,$(brew --prefix openssl)/lib" \
CPPFLAGS="-I$(brew --prefix openssl)/include" \
CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl)" \
pyenv install -v 3.9.5
Run Code Online (Sandbox Code Playgroud)
对于每个新版本,我都使用此命令并且它有效。
注意:
pyenv install xx.xx
,无论如何我总是必须使用完整的命令。对这些乱七八糟的事情一点也不高兴,但至少现在我可以使用 22.04 来工作。
编辑:我尝试了 Jakob 的建议将其添加到 .bashrc 中,如下所示:
export LDFLAGS="-Wl,-rpath,$(brew --prefix openssl)/lib"
export CPPFLAGS="-I$(brew --prefix openssl)/include"
export CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl)"
Run Code Online (Sandbox Code Playgroud)
然后我重新$SHELL
加载它,然后pyenv install xx.xx.xx
工作正常。
小智 15
遇到同样的问题,对我来说,它在运行以下命令后起作用(检查https://github.com/pyenv/pyenv/wiki#suggested-build-environment)。
sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
Run Code Online (Sandbox Code Playgroud)
无需额外标志即可安装。
pyenv install -v 3.9.13
Run Code Online (Sandbox Code Playgroud)
小智 8
我通过在 Ubuntu 22.04.1 LTS 上安装 libssl-dev 设法解决了这个错误
sudo apt install libssl-dev
Run Code Online (Sandbox Code Playgroud)
我在 Pop!_OS 22.04(基于 Ubuntu 22.04)中遇到了同样的错误,我使用 Homebrew 作为包管理器之一。
我无法获得上述任何答案,也无法获得任何建议https://github.com/pyenv/pyenv/wiki/Common-build-problems的工作。
对我有用的是(暂时)卸载 Homebrew openssl 软件包,确保通过 apt-get 安装 openssl v3,然后(可选)通过 Homebrew 重新安装 openssl。
brew uninstall --ignore-dependencies openssl@1.1
Run Code Online (Sandbox Code Playgroud)
sudo apt-get update
sudo apt-get install openssl libssl-dev
Run Code Online (Sandbox Code Playgroud)
brew install openssl@1.1
Run Code Online (Sandbox Code Playgroud)
注意:这与其说是解决方案,不如说是解决方法。它并不适合所有人,但希望它对我以外的人有帮助。
归档时间: |
|
查看次数: |
21005 次 |
最近记录: |