Kompilacja do pliku wykonywalnego pod Windows 72 (32-bit)

0

mam problem z kompilacją skryptu do pliku exe. próbowałem już pyinstaller i py2exe. Docelowo program ma działać pod windows 7 32 bit, super jeśli udałoby się uruchomić go pod windows xp 32 bit. w tej chwili kompiluje go na windows 11 pod python 3.11 32bit.

from RegonAPI import RegonAPI
from RegonAPI.exceptions import ApiAuthenticationError
import os
import time

# Klucz użytkownika wpisany testowy
TEST_API_KEY = "abcde12345abcde12345"


def wyszukaj_i_zapisz_dane_po_nip(nip):
    try:
        # Utworzenie klienta RegonAPI
        api = RegonAPI(is_production=True)
        api.authenticate(key=TEST_API_KEY)

        
        result = api.searchData(nip=nip)

        # Zapis danych do pliku NIP.txt
        with open("NIP.txt", "w") as file:
            for firma in result:
                
                nazwa_ulicy = f"{firma.get('Ulica', '')} {firma.get('NrNieruchomosci', '')}/{firma.get('NrLokalu', '')}" if firma.get('NrNieruchomosci') else ''
                file.write(f"'Nazwa': '{firma.get('Nazwa', '')}'\n"
                           f"'Ulica': '{nazwa_ulicy}'\n"
                           f"'Miejscowosc': '{firma.get('Miejscowosc', '')}'\n"
                           f"'KodPocztowy': '{firma.get('KodPocztowy', '')}'\n"
                           f"'Wojewodztwo': '{firma.get('Wojewodztwo', '')}'\n"
                           f"'Nip': '{firma.get('Nip', '')}'\n"
                           f"'Regon': '{firma.get('Regon', '')}'\n\n")
            print("Dane zapisane do pliku NIP.txt")

    except ApiAuthenticationError as e:
        print("Błąd autentykacji API:", e)
    except Exception as e:
        print("Wystąpił błąd:", e)

while True:
    if os.path.exists("innip.txt"):
        # Odczytanie numeru NIP z pliku innip.txt
        with open("innip.txt", "r") as file:
            nip = file.read().strip()
            # Wyszukanie danych po numerze NIP i zapisanie ich do pliku NIP.txt
            wyszukaj_i_zapisz_dane_po_nip(nip)
        # Usunięcie pliku innip.txt po odczycie
        os.remove("innip.txt")
    else:
        print("Brak pliku innip.txt.")
    

    time.sleep(3)

skrypt sprawdza folder w swojej lokalizacji na obecność pliku innip.txt jeśli go wykryje to pobiera dane z GUS i tworzy plik NIP.txt. Po przetworzeniu danych usuwa plik innip.txt i czeka na kolejny.

0

nie napisałeś co ci nie działa !
jak ma działać na XP to pewnie trzeba użyć pythona z czasów XP 2001-2007

0

Pod windows 11 skrypt się normalnie kompiluje, lecz gdy przeniosę plik exe na komputer z windows 7 otrzymuje błąd brak api-ms-win-core-path-l1-1-0.dll (windows 7 32bit sp1) i error loading dll python311.dll nie można odnaleźć określonego modułu. Sam skrypt działa na tym systemie lecz gdy próbuje go skompilować za pomocą pyinstaller, python przestaje działać (komunikat z windows)

1

@krzkos: zignorowałeś moją sugestię 😦

jak kompilujesz aplikację to zazwyczaj ma ona jakieś zależności do DLL,
jak używasz nowych narzędzi to zazwyczaj zależności sa do nowszych DLL (takich ktore sa w wndows 10-11)
jak użyjesz starych narzedzi to zależności bedą do starych DLL (np. takich ktore sa w XP)

generalnie grzebanie w prehistorii jest dla archeologów

0

Pobieram właśnie obraz winxp, spróbuję zainstalować pythona na xp lecz nie wiem jak z instalacją modułu regonapi. Co może być przyczyną że przy kompilacji pod windows 7 python się zawiesza?

0
krzkos napisał(a):

Pod windows 11 skrypt się normalnie kompiluje, lecz gdy przeniosę plik exe na komputer z windows 7 otrzymuje błąd brak api-ms-win-core-path-l1-1-0.dll (windows 7 32bit sp1) i error loading dll python311.dll nie można odnaleźć określonego modułu. Sam skrypt działa na tym systemie lecz gdy próbuje go skompilować za pomocą pyinstaller, python przestaje działać (komunikat z windows)

Możesz też przekopiować te biblioteki do folderu z exe, bo aplikacja najpierw szuka modułów w swoim katalogu i potem szuka w systemie, ale one dalej też mają jakieś zależności.
python311.dll to po prostu cpython api, które jest używane żeby odpalić kod pythona mimo, że kompilowałeś dalej jest tak, że tylko exec wywołuje z pamięci kod pythona, niczym to się nie różni jakbyś zainstalował na tym drugim komputerze pythona i odpalił na nim ten kod skryptu.

a te api-ms-win-core-path-1-1-0.dll, wydaje się być inne na windowsie 7, też przekopiuj do katalogu z exe.
Ale tak dalej mogą jakieś błędy wystąpić, ale inne, czasem jak wszystkie rozwiążesz to się uruchomi, a czasem nie.

Czasem może zadziałać, a czasem nie.

0

Zainstalowałem na windows 11 pythona 3.6.0 po tym zabiegu program działa na windows 7. Niestety nie znalazłem sposobu by na windows xp zainstalować ta sama wersję.

0

można domniemywać na podstawie https://www.python.org/downloads/windows/
ze ostatnia wersja działająca na XP to 3.4.X

0

Tak. Wiem. Lecz są sposoby z podmiana plikow. Lecz niestety nie udało mi się aby wszytko działało jak należy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1