Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 31, 2025 14:10:05

Timofei
Зарегистрирован: 2025-01-31
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужно собрать в py проект в exe так, чтобы exe работал в Windows XP на другом компьютере

Здравствуйте!

Преамбула: Я исследователь в области спектроскопии наноматериалов. Я пользуюсь спетрометром, железо которого управляется программой “wire” с графическим интерфейсом на компьютере под операционной системой виндоус XP без доступа в интернет. Эта данность, которую я поменять не в силах - спектрметром пользуюсь не один и замена компьютера на совреенный с современным софтом остановит проекты десятков людей на неопределенное время.
Сущесвтенная часть моего рабочего времеи уходит на стандартизированные и рутинные измерения - т.е. мое учатие заключается в том, что нужно много раз повторить определенне движения мышкой и ввести команды с клавиатуры и иногда принимать несложные решения о дальнейших действиях в зависимости от того, какие я вижу спетры. Я захотел эту процедуру автоматизироватть.

Поскольку wire не поддерживает API (я узнавал у производителя) я пошел обходным путем: Я скачал программу wire (это та которая упправляет спектрометром) на свой персональный ноутбук, и написал питон программу, которая эмулирует нажатия клавиш на клавиатуре и движения мышкой в нужной мне последовательности (а также просматривает txt файлы со спектрами, которые генерируются программой wire в процессе работы спектрометра и принимает решения на основе анализа спкектров). Я протестировал эту программу на своем компьютеретере: все нажатия просходят как надо, все хорошо. При сборке питон проекта в exe файл (через pyinstaller)тоже все работает хорошо - на моем персональном ноутбуке.

Но вот проблема:
Если запускать эти exe файлы на компьютере подключенном к спетрометру, то они не запускаются - windows XP не может выполнить эти файлы

Я вижу следующие пути решения:

Идея 1: Используя современный питон 3.12.4 на современном компьютере, упаковать мой проект в exe файл в режиме совместимости с XP. Протестировать также на современном ноутбуке но через винртуальную машину с XP. Возможно ли это?

Идея 2: снести с современного компа питон 3.12.4, установить на него последний питон из тех что совместимы с XP (это наверное 3.4?) и упаковать в exe. протестировать на виртуальной машине.

Идея 3: установить виртуальную машину с XP, на нее установить питон 3.4. и им же упаковать проект в exe.

Идея 4. Нарыть где нибуь в моем университете старый компьютер с XP но с доступом в интернет. Установить на него питон 3.4, упаковать проект в exe и протестировать.

В чем заключатеся мой вопрос:
Адекватны ли выше приведенные идеи или они обречены на провал? какая из них наиболее перспективная? может быть есть какой то совсем другой, очень простой путь?

Важное замечание: я не программист. Я устаовил питон, анаконду и VS code по инструкциям от чатгпт. Почти весь проект закодировали копайлот и чатгпт по моим запросам, а я только тестировал и подправлял немного. Слова “виртуальное окружение”, “интерпретатор” и т.д. мне не совсем понятны. Пожалуйста, если можно, имейте это ввиду, что я совсем новичок. Спасибо.

ниже приведу пример одной из функций, чтобы было понятно с чем я имею дело:

import sys
import os
import time
from pynput.keyboard import Controller as KeyboardController, Key
from pynput.mouse import Controller as MouseController, Button
from readConfig import readConfig

# Initialize the keyboard and mouse controllers
keyboard = KeyboardController()
mouse = MouseController()

def wireMoveTo(XYZ):
“”“Emulates mouse movements and keypresses to move to specified coordinates in Wire software.”“”


VpixelForX = readConfig(“VpixelForX:”)
VpixelForY = readConfig(“VpixelForY:”)
VpixelForZ = readConfig(“VpixelForZ:”)

HpixelForX = readConfig(“HpixelForX:”)
HpixelForY = readConfig(“HpixelForY:”)
HpixelForZ = readConfig(“HpixelForZ:”)

VpixelForGoTo = readConfig(“VpixelForGoTo:”)
HpixelForGoTo = readConfig(“HpixelForGoTo:”)

def enter_value(value):
“”“Deletes existing text and types a new value.”“”
for _ in range(5):
keyboard.press(Key.backspace)
keyboard.release(Key.backspace)
time.sleep(0.1)
keyboard.press(Key.delete)
keyboard.release(Key.delete)
time.sleep(0.1)

keyboard.type(str(value))
time.sleep(0.1)

def move_and_click(x, y):
“”“Moves mouse to a specific position and clicks.”“”
mouse.position = (x, y)
time.sleep(0.1)
mouse.click(Button.left, 1)
time.sleep(0.1)

print(f“Moving to position {XYZ} in Wire software…”)

for i in range(2):
# Enter X coordinate
print(f“Iteration {i+1}: Entering X coordinate…”)
move_and_click(HpixelForX, VpixelForX)
time.sleep(0.1)
enter_value(XYZ)
time.sleep(0.1)

time.sleep(0.1)

# Enter Y coordinate
print(f“Iteration {i+1}: Entering Y coordinate…”)
move_and_click(HpixelForY, VpixelForY)
time.sleep(0.1)
enter_value(XYZ)
time.sleep(0.1)

time.sleep(0.1)

# Enter Z coordinate
print(f“Iteration {i+1}: Entering Z coordinate…”)
move_and_click(HpixelForZ, VpixelForZ)
time.sleep(0.1)
enter_value(XYZ)
time.sleep(0.1)

time.sleep(0.1)

# Confirm the movement (simulating a click on ‘Go To’)
print(f“Iteration {i+1}: Executing move command…”)
move_and_click(HpixelForGoTo, VpixelForGoTo)
time.sleep(0.1)

time.sleep(0.1)

print(“Move command executed successfully.”)

if __name__ == ‘__main__’:
print('Start Testing of a function: wireMoveTo')
print('The key press emulation will start in 5 seconds. Please switch to the Wire application and do not touch anything.')

for i in range(5, 0, -1):
print(f'Starting in {i} seconds…')
time.sleep(1)

wireMoveTo()

print(“Finish Testing of a function: wireMoveTo”)
input(“Press Any Key to close.”)




В отедельном файле объявлен readconfig:
def readConfig(lineDescription):
configdata = “nothing”
with open(“config.txt”, “r”) as file:
for line in file:
if line.startswith(lineDescription):
configdata = int(line.strip())
break
return configdata

if __name__ == “__main__”:
# Example usage
lineDescription = “waterlineCPS785”
config_value = readConfig(lineDescription)
print(config_value)



Отредактировано Timofei (Янв. 31, 2025 14:12:55)

Офлайн

#2 Янв. 31, 2025 15:56:51

Alex.Pro.
От: Марик
Зарегистрирован: 2024-11-13
Сообщения: 67
Репутация: +  2  -
Профиль   Отправить e-mail  

Нужно собрать в py проект в exe так, чтобы exe работал в Windows XP на другом компьютере

Timofei
под виндоус XP
Сочувствую. В который уже раз вижу человека, у которого возникают проблемы с промэлектроникой. Техника достаточно надёжная, может ещё работать и работать, но возникают новые пожелания, новые потребности, а компьютерные технологии меняются быстро и возникают проблемы с обновлением специализированного софта. Но это всё лирика. По существу… IMHO, идея №3 самая реальная. Будете устанавливать XP в виртуальной машине - обратите внимание на разрядность операционки. На рабочей машине, наверняка, установлена 32-бит. Соответственно, и Вам под ВМ надо установить тоже XP 32-бит. Потом установить Пайтон 3.4.4 и заняться переписыванием и отладкой Вашей программы под устаревший Пайтон. Уверен, что придётся переписывать и f-строки и много ещё чего. Потом сможете откомпилировать Вашу программу (перевести из .py в .exe) и заняться её окончательным тестированием.
Удачи!

Офлайн

#3 Янв. 31, 2025 20:05:16

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2757
Репутация: +  184  -
Профиль   Отправить e-mail  

Нужно собрать в py проект в exe так, чтобы exe работал в Windows XP на другом компьютере

> Нужно собрать в py проект в exe так, чтобы exe работал в Windows XP

Зачем “exe”? Установите python на машине со спектрометром и запускайте через него свой скрипт.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version