Domanda

Sto cercando di convertire un programma di base tkinter GUI a un exe utilizzando py2exe. Tuttavia ho incontrato un errore utilizzando il seguente script di conversione.

# C:\Python26\test_hello_con.py py2exe

from distutils.core import setup
import py2exe

setup(windows=[r'C:\Python26\py2exe_test_tk.py'])

C: \ Python26 \ py2exe_test_tk.py è il seguente codice

import Tkinter as tk

root = tk.Tk()
root.title("Test")


label1 = tk.Label(root,text="Hello!",font=('arial', 10, 'bold'), bg='lightblue')
label1.pack(ipadx=100, ipady=100)


root.mainloop()

Questo è l'errore che ottengo quando provo a fare funzionare la nuova creazione exe

Traceback (most recent call last):
  File "py2exe_test_tk.py", line 4, in <module>
  File "Tkinter.pyc", line 1643, in __init__
_tkinter.TclError: Can't find a usable init.tcl in the following directories: 
    {C:/Users/My_Name/lib/tcl8.5} {C:/Users/My_Name/lib/tcl8.5} C:/Users/lib/tcl8.5 {C:/Users/My_Name/library} C:/Users/library C:/Users/tcl8.5.8/library C:/tcl8.5.8/library



This probably means that Tcl wasn't installed properly.

Sono abbastanza sicuro che sia qualcosa nella mia conversione i thats di script mi ??dà problemi. Che cosa ho tralascio? Oppure qualcuno ha un esempio di ciò che lo script di conversione sarà simile a un programma Tkinter GUI? Inoltre è possibile deviare l'uscita .exe file sul mio desktop?

Modifica

Il rapporto di errore, ha detto che mi mancava init.tcl {C: /Users/My_name/lib/tcl8.5} . Così ho fatto quella directory e mettere una copia di init.tcl lì. Ora, quando si tenta di eseguire il file exe si afferma che Msvcr90.dll che manca dal mio computer ed è necessaria per far funzionare il mio programma.

Anche questo è pitone 2.6.5 su Windows 7.

È stato utile?

Soluzione

Per il vostro problema originale non posso dire che cosa esattamente è il problema, ma di solito si aiuta con tentativi ed errori di indovinare i file mancanti e directory. Se sai cosa ti perdi, aggiungerli al proprio packages (per i moduli Python) o data_files (per gli altri file).

Il secondo problema è il risultato di alcuni c-moduli (e pitone stessa) essendo compilazione con MS Visual Studio, avendo così una dipendenza alla 9.0 (2008) runtime MS Visual C ++. È possibile risolvere questo problema sia:

  • possedere una copia di Visual Studio (Express Edition non conta), in modo tale che si è permesso di ridistribuire le dipendenze MSVCR (a condizione che si proibite agli utenti reengeneering ecc delle parti dependend)

  • indicando gli utenti al download della MS pacchetto 2008 Redistributable a Microsoft Visual C ++.

Altri suggerimenti

Ho trovato un bug sul sito virutalenv che ha suggerito la seguente https://github.com/pypa/virtualenv/issues/93

per le finestre nella directory "C: \ Environments \ virtualenv \ Scripts \ activate.bat" basta aggiungere che sono impostati per la strada giusta per TCL e TK per la versione python

set "TCL_LIBRARY=C:\Python27\tcl\tcl8.5"
set "TK_LIBRARY=C:\Python27\tcl\tk8.5"

e riavviare il cmd o shell

Ha funzionato molto bene per me quando ho avuto questo errore.

py2exe non funziona con i moduli, ho sentito parlare di uno chiamato c_freeze che a quanto pare funziona con i moduli, provare questo? http://cx-freeze.sourceforge.net/

Per quanto riguarda Msvcr90.dll , vedi questo post quali pacchetti e forse meno preferibile che avere all'utente di installare separatamente.

Inoltre, la questione specifica in questo post è stata mia e io ancora non capisco causa principale. Detto questo, un pitone disinstallazione completa e pulita ricostruire funzionava benissimo ... forse questo è il vostro problema troppo. py2exe dà RuntimeError: Troppo presto per creare un'immagine

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top