移动到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>
但是我不知道"openssl安装前缀"是什么意思,我以为它是openssl安装目录,所以我这样做了:
openssl version -d
OPENSSLDIR: "/home/linuxbrew/.linuxbrew/etc/openssl@1.1"
即使我看到在这个文件夹中没有任何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
最终得到了相同的错误消息。
不得不说,我尝试了很多其他的东西,我发现在其他地方和没有工作,但为了简单起见,我坚持与官方的迹象。
如果您遇到了同样的问题,并且解决方案来自这些命令之外的其他地方,请与我们分享!
非常感谢:)
更新
<openssl install prefix>
只是指基本路径或基本文件夹,只是Homebrew决定发明一个新名称,因为...嗯,我猜是一些非常重要的原因。
只需将<openssl install prefix>
替换为$(brew --prefix openssl)
即可解决此部分问题。
看看我自己对下面问题的回答,看看它对我是如何工作的,但是从我看到和尝试的所有不同的解决方案来看,每个案例可能需要一个不同的解决方案。祝你好运!
8条答案
按热度按时间rseugnpd1#
关于
<openssl install prefix>
是什么的疑问,我将编辑问题以澄清它。关于如何使pyenv安装版本成功,在尝试了所有我发现的主题,这是唯一的事情,为我工作:
对于每一个新版本,我都使用这个命令,它都能工作。
请注意:
pyenv install xx.xx
并不起作用,我总是必须使用完整的命令。对这一切一点也不满意,但至少现在我可以用22. 04来工作了。
编辑:我尝试了Jakob的建议,将其添加到. bashrc中,如下所示:
然后我做了
$SHELL
来重新加载它,然后pyenv install xx.xx.xx
工作正常。lxkprmvk2#
背景
我在Pop!_OS 22. 04(基于Ubuntu 22. 04)中也遇到了同样的错误,我使用Homebrew作为包管理器之一。
我无法得到上面的任何答案来工作,也无法得到任何建议https://github.com/pyenv/pyenv/wiki/Common-build-problems来工作。
变通方案
对我有效的方法是(暂时)卸载Homebrew openssl包,确保openssl v3是通过apt-get安装的,然后(可选)通过Homebrew重新安装openssl。
1.(临时)卸载Homebrew openssl
1.确保openssl v3是安装通过apt-get
1.(可选)重新安装Homebrew openssl
注意:这不是一个解决方案,而是一个变通方法。它不适合所有人,但希望它对我以外的人有帮助。
nhjlsmyf3#
遇到了同样的问题,对我来说,它在运行以下命令后工作(检查https://github.com/pyenv/pyenv/wiki#sugggested-build-environment)。
可以在没有其他标志的情况下安装。
fjaof16o4#
我通过在Ubuntu 22.04.1 LTS上安装libssl-dev解决了这个错误
m1m5dgzv5#
在我的主机上,我必须执行
brew install openssl
,它安装openssl@3,但brew --prefix openssl
仍然链接到openssl@1我需要完整地输入构建python 3. 9. 13的路径。也许有更好的方法来做前缀链接。
omtl5h9j6#
只是为了创建一个答案作为一个选项。问题很可能是
python3.10
的dev头文件还没有在python3-dev
中。安装python3.10-dev
,你应该可以开始了。wko9yo5t7#
1.打开ssl-3.0.7文件
ncecgwcz8#
我为同一个问题纠结了整整一个下午,上面提到的解决方案都不起作用,经过一番挖掘,我终于找到了
pyenv install
使用的gcc的问题(例如,请参见here和here)。简而言之,Python的安装带有Homebrew管理的构建依赖项;但是,
pyenv install
似乎使用system gcc而不是Homebrew的gcc,这就产生了问题。一个简单的解决方案对我来说是有效的,就是用pyenv install
指向Homebrew的gcc,让pyenv在它知道的世界中运行:注意:从目录
$(brew --prefix gcc)/bin
中检查正确的gcc版本(gcc-11
、gcc-12
等)。为了避免每次运行
pyenv install
时手动指向Homebrew的gcc,请为Homebrew管理的pyenv安装创建一个别名: