You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git Actions中用SAM构建项目遇OpenSSL相关AttributeError求助

问题:AttributeError: module 'lib' has no attribute 'OpenSSL_add_all_algorithms'

使用Python 3.9在GitHub Actions中构建项目,12月30日前同一代码构建正常,今日出现错误:AttributeError: module 'lib' has no attribute 'OpenSSL_add_all_algorithms'。未显式引入PyOpenSSL或Cryptography包,尝试升级、降级这两个包均无法解决问题,观察到GitHub Actions安装Python时自动下载了pyopenssl==22.0.0。

完整错误栈

Run sam build --config-env dev
Traceback (most recent call last):
  File "/home/runner/work/_temp/setup-sam-A5vDEq/bin/sam", line 8, in <module>
    sys.exit(cli())
  File "/home/runner/work/_temp/setup-sam-A5vDEq/.venv/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/home/runner/work/_temp/setup-sam-A5vDEq/.venv/lib/python3.9/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/home/runner/work/_temp/setup-sam-A5vDEq/.venv/lib/python3.9/site-packages/click/core.py", line 1651, in invoke
    cmd_name, cmd, args = self.resolve_command(ctx, args)
  File "/home/runner/work/_temp/setup-sam-A5vDEq/.venv/lib/python3.9/site-packages/click/core.py", line 1698, in resolve_command
    cmd = self.get_command(ctx, cmd_name)
  File "/home/runner/work/_temp/setup-sam-A5vDEq/.venv/lib/python3.9/site-packages/samcli/cli/command.py", line 133, in get_command
    mod = importlib.import_module(pkg_name)
  File "/opt/hostedtoolcache/Python/3.9.16/x64/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/home/runner/work/_temp/setup-sam-A5vDEq/.venv/lib/python3.9/site-packages/samcli/commands/build/__init__.py", line 6, in <module>
    from .command import cli  # noqa
  File "/home/runner/work/_temp/setup-sam-A5vDEq/.venv/lib/python3.9/site-packages/samcli/commands/build/command.py", line 12, in <module>
    from samcli.commands._utils.options import (
  File "/home/runner/work/_temp/setup-sam-A5vDEq/.venv/lib/python3.9/site-packages/samcli/commands/_utils/options.py", line 21, in <module>
    from samcli.commands._utils.template import get_template_data, TemplateNotFoundException
  File "/home/runner/work/_temp/setup-sam-A5vDEq/.venv/lib/python3.9/site-packages/samcli/commands/_utils/template.py", line 10, in <module>
    from botocore.utils import set_value_from_jmespath
  File "/home/runner/work/_temp/setup-sam-A5vDEq/.venv/lib/python3.9/site-packages/botocore/utils.py", line 37, in <module>
    import botocore.httpsession
  File "/home/runner/work/_temp/setup-sam-A5vDEq/.venv/lib/python3.9/site-packages/botocore/httpsession.py", line 46, in <module>
    from urllib3.contrib.pyopenssl import (
  File "/home/runner/work/_temp/setup-sam-A5vDEq/.venv/lib/python3.9/site-packages/urllib3/contrib/pyopenssl.py", line 50, in <module>
    import OpenSSL.crypto
  File "/home/runner/work/_temp/setup-sam-A5vDEq/.venv/lib/python3.9/site-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import crypto, SSL
  File "/home/runner/work/_temp/setup-sam-A5vDEq/.venv/lib/python3.9/site-packages/OpenSSL/crypto.py", line 3268, in <module>
    _lib.OpenSSL_add_all_algorithms()
AttributeError: module 'lib' has no attribute 'OpenSSL_add_all_algorithms'
Error: Process completed with exit code 1.

GitHub Actions配置

jobs: 
  deploy: 
    runs-on: ubuntu-latest 
    steps: 
      - uses: actions/checkout@v3 
      - uses: actions/setup-python@v4 
        with: 
          python-version: '3.9' 
      - uses: aws-actions/setup-sam@v2 
      - uses: aws-actions/configure-aws-credentials@v1 
        with: 
          aws-access-key-id:  
          aws-secret-access-key:  
          aws-region: us-east-2 
      - run: echo "export SAM_CLI_TELEMETRY=0" >>~/.profile 
      - run: source ~/.profile 
      # Run unit tests   
      - run: pip install -r tests/requirements.txt 
      - run: python -m pytest tests/unit -v

解决方法

  • 锁定依赖版本:该错误源于PyOpenSSL 22.0.0与新版本Cryptography的API不兼容,直接安装兼容版本的依赖包:

    pip install pyopenssl==23.3.0 cryptography==41.0.7
    

    也可以在项目的requirements.txt中添加这两个包的固定版本号,确保依赖稳定。

  • 修改GitHub Actions流程:在安装测试依赖前,先安装指定版本的依赖包,覆盖自动安装的旧版本:
    在pip install -r tests/requirements.txt步骤前添加:

    - run: pip install pyopenssl==23.3.0 cryptography==41.0.7
    
  • 指定SAM CLI版本:aws-actions/setup-sam@v2默认拉取最新SAM CLI,可能引入不兼容依赖。可以指定稳定版本:

    - uses: aws-actions/setup-sam@v2
      with:
        sam-version: '1.97.0'
    

内容的提问来源于stack exchange,提问作者Vidya Raghavendra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:50:26