[英]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 上查看我嘗試實現此功能的進度
編輯
通過避免解決:
似乎問題是使用PYTHONPATH
、 Python<=3.6
和PyQt4
的組合。
因此,構建的最小工作示例是:
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.