2014-12-16 14 views
7

Próbuję przekonwertować skrypt .py do pliku wykonywalnego przy użyciu py2exe. Do tej pory miałem wiele problemów, które zostały w dużej mierze rozwiązane przez "opcje" w pliku instalacyjnym poniżej. Ale teraz mam problem, że nie jestem w stanie znaleźć rozwiązania i zastanawiam się, czy inni mieli ten sam problem i naprawili go.Brak modułu o nazwie builtins

Kiedy wykonuję poniższy plik instalacyjny przy użyciu "python setup.py py2exe", daje mi to plik wykonywalny, ale kiedy go uruchomię, narzeka "Brak modułu o nazwie builtins".

Jedyny inny wpis, jaki mogłem znaleźć na ten temat, wskazywał, że builtins to rzecz python3, ale korzystam z wersji 2.7.

Doceń porady i porady na ten temat.

from distutils.core import setup 
import py2exe 

from distutils.filelist import findall 
import os 
import matplotlib 
matplotlibdatadir = matplotlib.get_data_path() 
matplotlibdata = findall(matplotlibdatadir) 



setup(
    console=['DET14.py'], 
    options={ 
      'py2exe': { 
         'packages' : ['matplotlib', 'pytz'], 
         'dll_excludes':['MSVCP90.DLL', 
             'libgdk-win32-2.0-0.dll', 
             'libgobject-2.0-0.dll', 
             'libgdk_pixbuf-2.0-0.dll'], 
         'includes':['scipy.sparse.csgraph._validation', 
          'scipy.special._ufuncs_cxx'] 
         } 
      }, 
# data_files=matplotlibdata_files 
    data_files=matplotlib.get_py2exe_datafiles() 
) 

Oto pełna lista, co wygląda komunikat o błędzie:

error message

+0

Czy to w całości błąd? W ogóle nie ma stosu? –

+0

Dobra uwaga ... Dodałem pełny komunikat o błędzie, który dostaję. –

+0

Ten punkt śledzenia stosu przy pakowaniu kodu robi coś interesującego.Prawdopodobnie warto byłoby się zastanowić, co dokładnie jest do zrobienia. –

Odpowiedz

2

wreszcie dostałem tej pracy. Okazało się, że miałem pewne błędy w oryginalnym pliku instalacyjnym, niektóre z nich były wręcz głupie, a niektóre po prostu odradzały mi brak zrozumienia, jak działają parametry polecenia instalacji. Dodam, że ta ostatnia klasa błędów została rozwiązana tylko z niektórymi szeganami w stylu Shelocka Holmesa i zwykłym starym testem i błędem. Rozumiem przez to, że nadal nie znalazłem żadnej dokumentacji, która wywołuje znaczenie i użycie parametrów polecenia setup. Jeśli ktoś ma te informacje i może przekazać je dalej, będzie to bardzo cenne.

Mając to jako tło, oto odpowiedź:

Były 2 podstawowe problemy:

  1. Lista pakietów w pliku konfiguracyjnym aboe było żałośnie niekompletne. Nadal nie jestem pewien, czy reguła jest taka, że ​​musisz wymieniać każdy pakiet, na którym opiera się Twój program, a na niektórych może polegać to, czego nie wiesz (np. Pytz, na przykład ...). Ale kiedy to zrobiłem, miałem coś w tym momencie, że mogłem w końcu zabrać się do pracy.

  2. Komunikat o błędzie w powyższym pierwotnym pytaniu wygląda na to, że mój program był zależny od rzeczy zwanej "patsy", co mnie zmyliło, ponieważ nie miałem pojęcia, co to jest, ale okazało się, że statmodels (whihc jest podstawą mojego projektu) ma zależność od patsy, więc musiała zostać uwzględniona na liście "pakietów".

Poniżej znajduje się plik instalacyjny, który zakończył działanie. Mam nadzieję, że ten opis logiki stojącej za poprawką okaże się pomocny dla innych, którzy borykają się z tym samym problemem.

from distutils.core import setup 
import py2exe 

from distutils.filelist import findall 
import os 
import matplotlib 
matplotlibdatadir = matplotlib.get_data_path() 
matplotlibdata = findall(matplotlibdatadir) 



setup(
    console=['DET14.py'], 
    options={ 
      'py2exe': { 
        'packages' : ['matplotlib', 'pytz','easygui',\ 
            'statsmodels','pandas','patsy'], 
        'dll_excludes':['MSVCP90.DLL', 
            'libgdk-win32-2.0-0.dll', 
            'libgobject-2.0-0.dll', 
            'libgdk_pixbuf-2.0-0.dll'], 
        'includes':['scipy.sparse.csgraph._validation', 
         'scipy.special._ufuncs_cxx'] 
        } 
     }, 
    data_files=matplotlib.get_py2exe_datafiles() 
) 
19

ja również znaleźć za pomocą „pip zainstalować przyszłości” rozwiązać ten problem

Dostałem informację stąd: https://askubuntu.com/questions/697226/importerror-no-module-named-builtins

Mam nadzieję, że to wyjaśnia to dla innych użytkowników, takich jak ja, którzy natknęli twoje pytanie

+1

W Ubuntu "sudo apt-get install python-future" rozwiązało to dla mnie. –