我试图在CentOS 7 Linux机器上构建Python 3.10.5,其中包含ssl
模块。python构建成功,但ssl
模块构建失败。
最初我得到一个关于python需要OpenSSL >= 1.1.1的错误,所以我按照here的说明安装了OpenSSL 1.1.1c,并验证了安装成功:
$ which openssl
/usr/local/ssl/bin/openssl
个字符
为了安装Python 3.10.5,我按照步骤here,将3.10.2替换为3.10.5。当我跑了一步:
sudo ./configure --enable-optimizations
型
我发现它使用的是默认版本的OpenSSL,这不符合要求。然后我试着跑:
sudo ./configure --enable-optimizations --with-openssl="/usr/local/ssl/bin"
型
但随后运行sudo make altinstall
显示ssl
和_ssl
模块再次构建失败。回到config命令的输出,我注意到:
checking for openssl/ssl.h in /usr/local/ssl/bin... no
型
然后我试着跑:
sudo ./configure --enable-optimizations --with-openssl="/usr/local/ssl/include"
型
因为我确认了这就是openssl/ssl.h
的位置然而,输出仍然表示:
checking for openssl/ssl.h in /usr/local/ssl/include... no
型
这是令人费解的,因为我确认这是文件的生活!
$ ll /usr/local/ssl/include/openssl/ssl.h
-rw-r--r-- 1 root root 111295 Oct 27 17:12 /usr/local/ssl/include/openssl/ssl.h
型
我还尝试运行了该命令的不同变体,在--with-openssl
参数中使用了略有不同的路径,并包括--with-openssl-rpath=auto
和--with-openssl-rpath=/usr/local/ssl/lib
,但仍然无法找到openssl/ssl.h
。
我看到另一个stackoverflow的答案指示修改文件~/Python-3.10.5/Modules/Setup
以取消注解并编辑行:
OPENSSL=/usr/local/ssl/bin/openssl # (Here I provided the path to my OPENSSL, which was set to some fake path before)
_ssl _ssl.c \
-I$(OPENSSL)/include -L$(OPENSSL)/lib \
-lssl -lcrypto
型
我这样做了,但仍然得到同样的错误。这个问题是否与ssl.h
存在于/usr/local/ssl/include/openssl
中而openssl二进制文件存在于/usr/local/ssl/bin
中的事实有关?我不知道足够的从这里开始,真的很感激任何帮助!
1条答案
按热度按时间mqkwyuun1#
x1c 0d1x的数据
正如您在configure文件中所看到的,ssldir不应包含include文件夹,因此只需使用**/usr/local/ssl**即可