2020年10月5日月曜日

GitHub Actions のコンテナに setup-python したときの error while loading shared libraries 対応


python: error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory

GitHub Actions で setup-python 使って python のテストをしていたのですが、とあるときから上記エラーが出るようになっていたので、以下の修正で対応しました。

修正前
 
zapcc-basic-test:
    runs-on: ubuntu-18.04
    container: docker://srzzumix/zapcc
    needs: prepare
    steps:
    - uses: actions/checkout@master
    - uses: actions/setup-python@v2
      with:
        python-version: 3.8
    - name: zapcc test
      run: |
        make -C test clean
        make -C test showcxxversion
        make -C test check_stdlib
        make -C test -j1 IUTEST_REQUIRE_PYTHON=1
        make -C test test
修正後
zapcc-basic-test:
    runs-on: ubuntu-18.04
    container: docker://srzzumix/zapcc
    needs: prepare
    steps:
    - uses: actions/checkout@master
    - uses: actions/setup-python@v2
      with:
        python-version: 3.8
   #### ここを追加 ####
    - name: Set Python environment variable
      run: echo "LD_LIBRARY_PATH=${{ env.pythonLocation }}/lib" >> $GITHUB_ENV
   ################
    - name: zapcc test
      run: |
        make -C test clean
        make -C test showcxxversion
        make -C test check_stdlib
        make -C test -j1 IUTEST_REQUIRE_PYTHON=1
        make -C test test

setup-python が pythonLocation 環境変数をセットしてくれるのでそれを使って LD_LIBRARY_PATH を設定します。

以上。

2020/10/6 追記

set-env コマンドは Deprecated だったので修正しました。
GitHub Actions: Deprecating set-env and add-path commands - GitHub Changelog

修正前: echo '::set-env name=LD_LIBRARY_PATH::${{ env.pythonLocation }}/lib'
修正後: echo "LD_LIBRARY_PATH=${{ env.pythonLocation }}/lib" >> $GITHUB_ENV

0 件のコメント:

コメントを投稿