Topic: Vorrei far girare un programma .pyc in un altro ambiente (? meglio, OS)...  (Letto 1909 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Arruba

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
Difficile scrivere un Oggetto che abbia senso...

Antefatto:
La Regione Liguria usa per la certificazione energetica un programma in Python che si chiama Celeste ed è derivato da Docet, che gira SOLO Windows 32bit.
Viene lanciato da una successione di scripts, ma sostanzialmente in una directory di nome Docet troviamo, nelle loro cartelle, Apache, Prism, Python,Scripts e Webapp.
Apache sappiamo cosa è, lo usano per l'interfaccia; Python potrebbe essere un 2.4.3; Prism per me è come arabo, versione 0.9, ma vedo che Mozilla Foundation lo ha dismesso; Webapp, li dentro ci sono docet_web, binario, e docet@prism (docet è il nome del software per la certificazione energetica da cui è derivato Celeste); Script contiene run.bat (che setta i path direi per win e lancia docet.pyc:
@echo off
set PATH=/docet/python
set PYTHONPATH=/docet/python;/docet/python/DLLs;/docet/python/Lib;/docet/python/Lib/site-packages

docetpythonpython.exe docetscriptsdocet.pyc
exit
) chiamato da autorun.bat alla radice del disco (@echo off
start docetscriptsun.bat
) e docet.pyc

Problema:
il programma è vecchio e direi che non importa loro mantenerlo, anche se è obbligatorio usarlo (... versione 0.4 del 28 luglio 2009...)
Secondo voi, potrebbe essere possibile modificare qualcosa (forse la versione di Python, senza passare alla 3, mi par di capire, compilare - o trovarlo compilato - Prism per Mac) per farlo girare anche sotto win7 a 64 bit? e, ancor meglio, cosa potrei fare per cercare di farlo girare sotto Mac OSX? Sarebbe per uso personale, per rendersi la vita un poco più semplice.

Altro:
posto qui, e se è il posto sbagliato me lo direte;
se qualcuno vuole la iso di Celeste, 82 mega, la posso mettere da qualche parte;
non so programmare coi linguaggi molto moderni, né sono programmatore (non ho le basi teoriche, soprattutto), ma sono in grado di muovermi col terminale e ho scritto cose, anche mediamente complesse, per aiutarmi a svolgere cose complesse in CAD con un dialetto del Pascal.

Grazie di avermi letto fin qui.
Roberto

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.851
  • Punti reputazione: 9
    • Mostra profilo
Detto così, ehm... sembra una noia mortale a partire da "Regione Liguria"...  :D

La buona notizia è che se gira in win32, allora gira anche in win64 probabilmente in modalità compatibilità... non dovrebbero esserci problemi, prova.

La cattiva notizia è... tutto il resto. Primo, il problema vero è che tu non hai i sorgenti python di Celeste, da quel che capisco... hai solo il pyc compilato. Quindi, o "funziona e basta", oppure qualora dovessi metterci mano non potresti.
Per "funziona e basta" vuol dire che, lasciando inalterato il pyc e cambiandogli intorno le altre librerie (migrando per altri/più recenti sistemi operativi), tutto funziona magicamente lo stesso. Una per una:
- Apache... non so, a casa mia apache è un server http, forse stiamo parlando di cose diverse?
- Prism, ovviamente è un problema, essendo un software dismesso. Forse si trova qualche download vecchio in giro ma... Certo, si può vedere a che cosa gli serve davvero Prism, forse si può sostituire con un moderno browser come Firefox... però bisognerebbe metter mano nei sorgenti python per modificare le chiamate, e abbiamo stabilito che questo non si può fare.
- Python 2.4.3 o quel che è: certo, in teoria si può aggiornare a qualsiasi 2.x, ma in pratica perché farlo, se tanto non puoi comunque lavorare sui sorgenti di Celeste? Quindi al limite di basta trovare una versione di Python 2.4.3 per mac, e stop... forse... perché poi...
- ... non è detto che il pyc di celeste non importi pacchetti che non ci sono di default nella libreria standard... quindi forse dovresti installarli anche nella tua ipotetica versione per mac... siccome non puoi esaminare il pyc di Celeste per vedere che cosa importa, non ti resta che esaminare il tuo Python 2.4.3 per vedere che cosa c'è dentro...

Se riuscissi a mettere insieme tutte queste informazioni e trapiantare tutte queste librerie nella loro versione per mac, non ti resterebbe che il compito più facile... rifare quei pochi script che avviano tutta la macchina. Però dubito che riuscirai a venirne a capo.



Quindi, sintetizzando: se non hai i sorgenti e non puoi metterci mano, non puoi fare praticamente niente (a meno di rassegnarti a decine di tentativi e poi forse con una botta di fortuna qualcosa va a posto). Se riesci a procurarti i sorgenti, puoi fare letteralmente qualunque cosa.



EDIT: uhm, da una rapida occhiata in internet mi sembra anche peggio del previsto... Non avevo capito dalle tue parole che in realtà "Celeste" è solo un sottile layer in python intorno al "vero" programma che si chiama "Docet". Probabilmente Celeste serve a chiamare Docet in un certo modo impostando certe cose, non so. Ma Doce è un programma in .Net, e ovviamente funzionerà solo in ambiente windows... e questo chiude la partita, indimentendenmente dalla tua capacità di reperire tutte le altre librerie.
A meno che non mi stia sbagliando, naturalmente.
« Ultima modifica: Maggio 13, 2014, 18:02 da RicPol »

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
In generale i file pyc non sono intesi per la distribuzione. Tipicamente non funzionano con versioni diverse di Python sulla major (ovvero vanno su 2.4.x), ma sono compatibili su OS diversi. Per la parte .Net... boh? Non sembra leggera.

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.638
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Non vorrei azzardare, ma forse qualche decompilatore da pyc a py si trova in rete...

Offline Arruba

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
Detto così, ehm... sembra una noia mortale a partire da "Regione Liguria"...  :D

La buona notizia è che se gira in win32, allora gira anche in win64 probabilmente in modalità compatibilità... non dovrebbero esserci problemi, prova.

...

EDIT: uhm, da una rapida occhiata in internet mi sembra anche peggio del previsto... Non avevo capito dalle tue parole che in realtà "Celeste" è solo un sottile layer in python intorno al "vero" programma che si chiama "Docet". Probabilmente Celeste serve a chiamare Docet in un certo modo impostando certe cose, non so. Ma Doce è un programma in .Net, e ovviamente funzionerà solo in ambiente windows... e questo chiude la partita, indimentendenmente dalla tua capacità di reperire tutte le altre librerie.
A meno che non mi stia sbagliando, naturalmente.


Allora, Apache è Apache, il server web, e Docet è il motore che sta sotto, in effetti. Software Enea, e gli serve .Net...
Quindi, nisba; non avevo pensato a controllare come era fatto Docet, e davo per scontato che anche lui fosse in Python: a volte pensare prima aiuta!

Grazie per il suggerimento di far girare il tutto in compatibility mode; forse lo avevo provato, ma forse bisognerà far girare così tutti i componenti del sistema.

Quanto alla noia, è anche peggio: una interfaccia demenziale, che irrita solo a doverla usare.

Offline Arruba

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
In generale i file pyc non sono intesi per la distribuzione. Tipicamente non funzionano con versioni diverse di Python sulla major (ovvero vanno su 2.4.x), ma sono compatibili su OS diversi. Per la parte .Net... boh? Non sembra leggera.

Grazie anche a te. Credo sia proprio irrealizzabile.

Offline Arruba

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
Non vorrei azzardare, ma forse qualche decompilatore da pyc a py si trova in rete...

Anche questa può essere una buona idea, grazie; anzi dovrei averne uno sprofondato da qualche parte nel disco, mai usato, ma magari funziona. Anche se visto quanto detto prima probabilmente non serve a niente.

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.851
  • Punti reputazione: 9
    • Mostra profilo
Sì beh, non volevo arrivare a proporre un decompilatore, visto che comunque il vero ostacolo insormontabile è Docet...

In ogni caso, se non riesci a farlo girare in Win 7/8, tieni presente che VirtualBox è tuo amico.

Offline Arruba

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
Sì beh, non volevo arrivare a proporre un decompilatore, visto che comunque il vero ostacolo insormontabile è Docet...

In ogni caso, se non riesci a farlo girare in Win 7/8, tieni presente che VirtualBox è tuo amico.

Si, oggi da me gira in una VM con win7/32 sotto OSX; una mia collega ha invece un portatile con win7/64 e anche li c'è una VM, ma le cose fatte male non mi piacciono, e allora mi sarebbe piaciuto farlo andare nativo su tutte e due le piattaforme. Ma forse, visto che non arriva mai la prima pagina è un problema di Apache...
Approfondirò in quella direzione.

Grazie a tutti, mi siete stati di aiuto a chiarirmi un po' di più le idee.

Offline marcomg

  • python habilis
  • **
  • Post: 77
  • Punti reputazione: 0
    • Mostra profilo
Non vorrei azzardare, ma forse qualche decompilatore da pyc a py si trova in rete...
Ce ne sono e funzionano anche bene (se non ottimizzato resuscita anche i commenti).
Prova questo https://github.com/gstarnberger/uncompyle ma dovrebbe essere per python 2.7
Invece questo (mai provato) funziona da python 1.5 a 2.3 inclusi http://archive.debian.net/sarge/decompyle (se non hai debian basta scaricare il file sorgenti che è un archivio tar.gz).

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Non vorrei azzardare, ma forse qualche decompilatore da pyc a py si trova in rete...
Ce ne sono e funzionano anche bene (se non ottimizzato resuscita anche i commenti).
Prova questo https://github.com/gstarnberger/uncompyle ma dovrebbe essere per python 2.7
Invece questo (mai provato) funziona da python 1.5 a 2.3 inclusi http://archive.debian.net/sarge/decompyle (se non hai debian basta scaricare il file sorgenti che è un archivio tar.gz).

Penso che sia evidente che il problema non era decompilare, visto che Python e' solo un piccolo layer su un monte di orrore non portabile.
E' come andare a spolverare la punta di un monte di guano.

Per inciso, perche' riaprire tutti questi thread morti e sepolti? Tentativo di fare andare su il numero dei post?
« Ultima modifica: Agosto 21, 2014, 12:40 da riko »

Offline marcomg

  • python habilis
  • **
  • Post: 77
  • Punti reputazione: 0
    • Mostra profilo
Hem, no. Non mi interessa il numero dei post, ma non so per quale diamine di motivo mi ha segnato il 3D come da leggere e non ho guardato la data dell'ultimo post :thinking:

Offline Giornale di Sistema

  • python sapiens sapiens
  • ******
  • Post: 3.124
  • Punti reputazione: 4
    • Mostra profilo
    • Distillato di Python
non so per quale diamine di motivo mi ha segnato il 3D come da leggere e non ho guardato la data dell'ultimo post :thinking:

Forse perché era dal prima del13 maggio che non entravi nel forum?

Offline marcomg

  • python habilis
  • **
  • Post: 77
  • Punti reputazione: 0
    • Mostra profilo
No, no, ci sono entrato due giorni fa e avevo schiacciato (o almeno credo a questo punto :dont-know:) "Segna tutti i messaggi come letti". Molto probabilmente lo devo aver fatto nelle varie sezione e questa mi è sfuggita. La prossima volta starò più attento  ;)