JackMcKew / pyinstaller-action-windows

Github Action for building executables with Pyinstaller
MIT License
173 stars 71 forks source link

requirements.txt #9

Closed richierh closed 3 years ago

richierh commented 3 years ago

I have write main.yml file like belowv


name: Package Application with Pyinstaller

  on:
    push:
      branches: [ master ]
    pull_request:
      branches: [ master ]

  jobs:
    build:

      runs-on: ubuntu-latest

      steps:
      - uses: actions/checkout@v2

      - name: Package Application
        uses: JackMcKew/pyinstaller-action-windows@main
        with:
          path: .

      - uses: actions/upload-artifact@v2
        with:
          name: name-of-artifact
          path: dist/windows

I have a file requirements.txt as in my https://github.com/richierh/PyIST/ projects, but it does not install all the package inside the requirements.txt

JackMcKew commented 3 years ago

As you can see from the logs, it installs everything from pip that it can: https://github.com/richierh/PyIST/runs/1709438687?check_suite_focus=true

I note that you have 2 different requirements.txt files in the root of the repo, note that it will only use the one named requirements.txt and ignore all others.

JackMcKew commented 3 years ago

Closing due to no update

DERGONokay commented 2 years ago

Hi, Im having a simmilar issue right now...

I have the .spec file and requirements.txt both in the root folder of the project

In the action.yml I have set the path for the JackMcKew/pyinstaller-action-windows@main action to .

name: Package Application with Pyinstaller

on:
  push:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    - name: Package Application
      uses: JackMcKew/pyinstaller-action-windows@main
      with:
        path: .
        spec: pesquero.spec

    - uses: actions/upload-artifact@v2
      with:
        name: fisherman
        path: dist/windows
        if-no-files-found: error

In the action logs I can clearly see that the dependencies where downloaded and installed:

Successfully built pyautogui pygetwindow pyscreeze PyTweening mouseinfo pymsgbox pyperclip pyrect
Installing collected packages: PyTweening, pyrect, PyQt5-Qt5, pyperclip, pymsgbox, PyQt5-sip, pygetwindow, Pillow, pyscreeze, PyQt5, mouseinfo, pyautogui
Successfully installed Pillow-9.1.0 PyQt5-5.15.6 PyQt5-Qt5-5.15.2 PyQt5-sip-12.10.1 PyTweening-1.0.4 mouseinfo-0.1.3 pyautogui-0.9.53 pygetwindow-0.0.9 pymsgbox-1.0.9 pyperclip-1.8.2 pyrect-0.2.0 pyscreeze-0.1.28

But when I download the artifact it only has the PyQt5 dependency and the other ones are missing, therefore the app wont start

.spec

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

a = Analysis(
    ['src\\pesquero.pyw'],
    pathex=[],
    binaries=[],
    datas=[('src/assets', 'assets')],
    hiddenimports=[],
    hookspath=[],
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    [],
    exclude_binaries=True,
    name='pesquero',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    icon='src\\assets\\logo.ico',
)
coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],
    name='fisherman',
)

Also if I execute manually the PyInstaller it works just fine

python -m PyInstaller --icon=src/assets/logo.ico --add-data="src/assets;assets" src/pesquero.pyw

JackMcKew commented 2 years ago

This is a strange one @DamianLisas 🤔

My only thought might be if you could try running:

python -m pyinstaller --clean -y --dist ./dist/windows --workpath /tmp pesquero.spec

On your machine as that's what is inside the entrypoint of the action and it differs from the last line you've executed that works

Let me know how you go