Python EXE nie działa na XP

0

Siemka.
Mam pewien dziwny problem. Zrobiłem sobie program/skrypt, przerobiłem go poprzez py2exe na plik wykonywalny. Na Windows 10, 8 i 7 działa bez problemu. Niestety przy próbie odpalenia tego na Windows XP (SP2), wywala błąd "System nie może wykonać określonego programu", bez żadnego kodu błędu ani nic (odpalane z konsoli).
Wersja Python to 2.7 najnowsza, 32 bitowa. py2exe też specjalnie przeinstalowane na wersję 32-bitową.
Niestety nie udało mi się tego odpalić na różne sposoby..
Postanowiłem więc potem interpreter zainstalować na XP. Proste komendy typu 2+2 działają, jak i inne. Problemem okazuje się import modułu socket. Import sys i innych wykonuje się w porządku, ale przy Socket jest błąd ładowania modułu DLL ("_socket"). Błąd: "DLL load failed: nie można uruchomić aplikacji ponieważ jej konfiguracja jest niewłaściwa". Jak to rozumieć?
Gdzieś wyczytałem, że problemem mogą być ograniczenia używania socketów ("raw socket") na systemach Windows od XP SP2 w górę..
Uprzedzając pytanie, czemu taki system stary i niezaktualizowany: bo taki jest sprzęt w miejscu, gdzie ten program ma być odpalony, stary, na jakiejś hali produkcyjnej, bez dostępu do neta, kilkadziesiąt takich maszyn. Aktualizacja do SP3 potrwa wieki.. poza tym maszyny non stop póki co pracują i nie za bardzo jest czas, by je wyłączyć na czas aktualizacji systemu (co na tych starych maszynach może zając nawet i 2-3 godziny). ale nawet gdyby, udało się do tego przysiąść w przerwie świątcznej, to sam problem i tak jest intrygujący. Czemu na od 7 w górę śmiga bez problemu, a na XP się wywala, i to w wersji EXE, jak i skryptu wywoływanego poleceniem "python main.py".
W kwestii uzupełnienia jeszcze: ścieżka PATH jest właściwa. System legalny, prawie że świeży (testowane też na maszynie wirtualnej), dostarczany od dostawcy maszyn. Wersja Python 2.7, najnowsza. Interpreter na pewno w wersji 32-bitowej. Kompilacja odbywała się pod 10, też w wersji 32-bitowej. Wykorzystywane moduły w programie, z takich mniej standardowych to: socket, mysql, os.path, subprocess, ctypes, uuid...

0

Spróbowałbym ze starą wersją pythona, tzn jakieś z czasów świetności tego XP. Zapewne nastąpiły zmiany w API windowsa i nowe wersje pythona je uwzględniają (przyjmując założenie że XP nikt już nie używa).

0

Obawiam się, że ten SP3 będzie konieczny. Sprawdzę.

0

2 dni wyjęte z życia przez kombinowanie na osiem stron świata, a na najprostsze rozwiązanie człowiek wpaść nie może...
Dzieki!
wersja 2.7.2 z 2011 roku, program udało się uruchomić przez interpreter. Choć nie w 100%, ale nie wywala błędu importu. Jeszcze sprawdzę py2exe, jak zrobię stosowne poprawki, bo jeszcze nie wszystko śmiga w tej starszej wersji tak jak powinno i pewne ograniczenia systemu mnie ograniczyły, ale z tym sobie już raczej poradzę. Jak tylko py2exe ruszy to będę bardzo zadowolony :)

0
Azarien napisał(a):
Wielki Orzeł napisał(a):

Proste komendy typu 2+2 działają, jak i inne. Problemem okazuje się import modułu socket. Import sys i innych wykonuje się w porządku, ale przy Socket jest błąd ładowania modułu DLL ("_socket"). Błąd: "DLL load failed: nie można uruchomić aplikacji ponieważ jej konfiguracja jest niewłaściwa". Jak to rozumieć?

Pokaż kod.

Odpalałem interpreter poleceniem "python" w cmd.
Wpisuje: "import socket" i mam błąd od razu o tym DLL. Wpisując 2+2 jest ok, dostaję wynik. "import sys" wchodzi bez błędu, a "import socket" jest błąd.. Więc wystarczy program o jednej linijce kodu "import socket".
W wersji starszej poszło.
Teraz się tylko zastanawiam, czemu w mysql.connector, wywala błąd przy zapytaniu, w którym jest WHERE.
"SELECT id, x FROM abc LIMIT 1" - brak błędu.
"SELECT id, x FROM abc WHERE id = 0 LIMIT 1" - błąd składni... zaznaczę, że oczywiście kolumna id istnieje, tak jak i tabela, no i są tam dane. Może spróbuję ze starszą wersją mysql.connector :P

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