解决在Alpine Docker里安装python库出现的问题以及解决办法
拓屿博客

解决在Alpine Docker里安装python库出现的问题以及解决办法

Too子牙
2021-08-13 / 2 评论 / 741 阅读 / 耗时: 62 ms / 正在检测是否收录...
温馨提示:
本文最后更新于2022年03月12日,已超过1122天没有更新,若内容或图片失效,请留言反馈。

前文

今天在用Alpine作为操作系统的Docker容器中,想要运行一个python程序,需要用到cryptography库,所以直接使用pip3 install cryptography进行安装,结果出现了fatal error: openssl/opensslv.h: No such file or directory的错误

1
出现了问题,肯定要解决,百度了一番,经过几番尝试终于是成功了


错误原因

If you encounter this error during compilation, this is because of the following: The program you are trying to build is using OpenSSL, but necessary development files (libraries and header files) required to link with OpenSSL are missing on your Linux platform.
To fix this problem, you have to install OpenSSL development package, which is available in standard repositories of all modern Linux distributions.

翻译一下,就是这个cryptography库在pip源里找不到,需要系统使用OpenSSL构建,但是这个OpenSSL系统并不自带,也需要安装


解决办法

  • 在 Debian、Ubuntu 或其衍生产品上安装 OpenSSL 开发包:

    sudo apt-get install libssl-dev
  • 在 Fedora、CentOS 或 RHEL 上安装 OpenSSL 开发包:

    sudo yum install openssl-devel

    但很可惜的是,Alpine不属于以上两类,它是一个仅5MB的最小Linux发行版,使用apk作为包管理工具,于是在Alpine官方软件包网站 上查找有关OpenSSL的消息,结果找到了

2
然后将对应的branch和repository添加到/etc/apk/repositories中即可,由于在国内访问apk仓库较缓慢,建议在使用apk之前先替换仓库地址为国内镜像

sed -i.bak 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

然后进行之前的步骤

vi /etc/apk/repositories

将对应的branch和repository添加进去即可

3
然后执行下面的命令,安装OpenSSL开发包

apk add openssl-dev

4
成功之后,就可以安装最初想要安装的cryptography库了

5
可以看到成功的安装了,真是太不容易了,呜呜呜 表情 表情 表情

本文共 319 个字数,平均阅读时长 ≈ 1分钟
2

打赏

海报

正在生成.....

评论 (2)

语录
取消
  1. 头像
    Too子牙-tooziya@tooziya.com Lv.2 作者
    成都 ·Windows 10 · Google Chrome
    沙发

    终于可以评论了

    回复 删除 垃圾
  2. 头像
    Too子牙-tooziya@tooziya.com Lv.2 作者
    成都 ·Windows 10 · Google Chrome
    板凳

    真好

    回复 删除 垃圾