簡體   English   中英

如何在 GitHub Actions 上的 matrix.python-version 中添加 pyqt5?

[英]How to add pyqt5 in matrix.python-version on GitHub Actions?

pyqt5添加到 GitHub 的教程可以在此線程中找到:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Setup python
        uses: actions/setup-python@v2
        with:
          python-version: 3.6
          architecture: x64
      - name: Install pyqt4 pyqt5
        run: |
            sudo apt-get install python3-setuptools python3-pyqt5 python3-pyqt4
            python3 -m pip install matplotlib
      - name: create testqt5.py
        run: |
          cat <<EOF >testqt5.py
          import matplotlib
          matplotlib.use('Qt5Agg')
          from PyQt5 import QtCore, QtWidgets
          EOF
      - name: Run python script
        run: |
          python3 testqt5.py 
        env:
          PYTHONPATH: ":/usr/lib/python3/dist-packages"
      - name: create testqt4.py
        run: |
          cat <<EOF >testqt4.py
          import matplotlib
          matplotlib.use('Qt4Agg')
          from PyQt4 import QtCore, QtGui
          EOF
      - name: Run python script
        run: |
          python3 testqt4.py
        env:
          PYTHONPATH: ":/usr/lib/python3/dist-packages"

但是,它沒有使用matrix.python-version

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v3
        with:
          python-version: ${{ matrix.python-version }}
          cache: 'pip'

如何使用matrix.python-version設置支持matplotlib.use('Qt5Agg') GitHub 操作?

import matplotlib
matplotlib.use('Qt5Agg')

如果解決方案也支持使用matrix.os Windows 和 MAC 會更好


這是我的嘗試和錯誤消息:

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v3
        with:
          python-version: ${{ matrix.python-version }}
          cache: 'pip'

      - name: Install pyqt5
        run: |
          sudo apt-get install python3-pyqt5

      - name: Test
        run: |
          pip install pytest pytest-cov
          pytest
        env:
          PYTHONPATH: ":/usr/lib/python3/dist-packages"
Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.6.15/x64/bin/pip", line 7, in <module>
    from pip._internal.cli.main import main
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/main.py", line 10, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/autocompletion.py", line 9, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/main_parser.py", line 7, in <module>
    from pip._internal.cli import cmdoptions
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/cmdoptions.py", line 25, in <module>
    from pip._internal.locations import USER_CACHE_DIR, get_src_prefix
  File "/usr/lib/python3/dist-packages/pip/_internal/locations.py", line 19, in <module>
    from pip._internal.utils import appdirs
  File "/usr/lib/python3/dist-packages/pip/_internal/utils/appdirs.py", line 13, in <module>
    from pip._vendor import appdirs as _appdirs
ImportError: cannot import name 'appdirs'

沒有任何矩陣的工作示例:

name: CI

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Clone this repository
        uses: actions/checkout@v3
        
      - name: Install pyqt4 pyqt5
        run: |
          sudo apt-get install python3-setuptools python3-pyqt5
          python3 -m pip install matplotlib
      - name: Run python script
        run: |
          python3 test_matplotlib_pyqt5.py

在我的GitHub 上查看我嘗試實現此功能的進度


編輯

通過避免解決:

  1. 蟒蛇路徑
  2. 蟒蛇<=3.6
  3. PyQt4

似乎問題是使用PYTHONPATHPython<=3.6PyQt4的組合。

因此,構建的最小工作示例是:

name: CI-python-matrix

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.7", "3.8", "3.9", "3.10"]

    steps:
      - name: Clone this repository
        uses: actions/checkout@v3

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v3
        with:
          python-version: ${{ matrix.python-version }}
          cache: 'pip'

      - name: Install pyqt5
        run: |
          sudo apt-get update
          sudo apt-get install python3-setuptools python3-pyqt5
          python3 -m pip install matplotlib PyQt5

      - name: Run python script
        run: |
          python3 test_matplotlib_pyqt5.py

在我的 GitHub 存儲庫提交歷史中查看我解決此問題的過程


編輯

有趣的是,如果只使用 Python>=3.7,我們可以跳過 sudo 操作,單獨依賴 pip。

name: CI-python-os-matrix

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.7", "3.8", "3.9", "3.10"]
        os: [ubuntu-latest, windows-latest, macos-latest]

    steps:
      - name: Clone this repository
        uses: actions/checkout@v3

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v3
        with:
          python-version: ${{ matrix.python-version }}
          cache: 'pip'

      - name: Install with cache
        run: |
          pip install -r requirements.txt

      - name: Run python script
        run: |
          python3 test_matplotlib_pyqt5.py

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM