2013-09-23 7 views
7

Sto cercando di usare Pyinstaller per creare un exe del mio codice Python da distribuire facilmente. Ogni volta che provo a eseguire pyinstaller.py, ricevo un errore "[Errno 22] modalità non valida ('rb') o nomefile: ''"pyinstaller [ErrNo 22]

Ho visto alcuni altri post su questo problema dicendo che il problema è di solito causato da hardcoding in percorsi di file per la lettura di dati, ma tutti i miei percorsi sono fatti usando variabili e chiedendo all'utente dove si trovano i file.

File "pyinstaller.py", line 18, in <module> 
run() 
File "\PyInstaller-2.1\PyInstaller-2.1\PyInstaller\main.py", line 88, in run 
run_build(opts, spec_file, pyi_config) 
File "\PyInstaller-2.1\PyInstaller-2.1\PyInstaller\main.py", line 46, in run_build 
PyInstaller.build.main(pyi_config, spec_file, **opts.__dict__) 
File "\PyInstaller-2.1\PyInstaller-2.1\PyInstaller\build.py", line 1924, in main 
build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build')) 
File "\PyInstaller-2.1\PyInstaller-2.1\PyInstaller\build.py", line 1873, in build 
execfile(spec) 
File "\PyInstaller-2.1\PyInstaller-2.1\guimain\guimain.spec", line 17, in <module> 
console=True) 
File "\PyInstaller-2.1\PyInstaller-2.1\PyInstaller\build.py", line 1170, in __init__ 
strip_binaries=self.strip, upx_binaries=self.upx, 
File "\PyInstaller-2.1\PyInstaller-2.1\PyInstaller\build.py", line 1008, in __init__ 
self.__postinit__() 
File "\PyInstaller-2.1\PyInstaller-2.1\PyInstaller\build.py", line 309, in __postinit__ 
self.assemble() 
File "\PyInstaller-2.1\PyInstaller-2.1\PyInstaller\build.py", line 1050, in assemble 
dist_nm=inm) 
File "\PyInstaller-2.1\PyInstaller-2.1\PyInstaller\build.py", line 842, in checkCache 
digest = cacheDigest(fnm) 
File "\PyInstaller-2.1\PyInstaller-2.1\PyInstaller\build.py", line 796, in cacheDigest 
data = open(fnm, "rb").read() 
IOError: [Errno 22] invalid mode ('rb') or filename: '' 

Qualcuno ha qualche idea come posso cominciare a risolvere questo problema?

edit: Usando la versione 2.1 di pyinstaller

edit: Così ho provato testare il mio codice con la creazione di questo:

import pandas as pd 

if __name__ == '__main__': 
    maindata = pd.DataFrame 
    print maindata 

che mi sta dando lo stesso errore.

+0

quale sistema operativo? Non ho mai avuto problemi con esso ho appena chiamato dalla mia cartella di progetto 'C: \ pyinstaller \ pyinstaller.py main.py' –

+0

Windows 7 32bit – Wizuriel

+0

stai eseguendo dalla cartella del progetto? –

risposta

1

Bene reinstallato pywin32 e ora lavora: s solo andando andare con lui

+1

Ho lo stesso problema e reinstallare pywin32 non lo ha risolto. – sebo

1

appena trascorso la parte migliore di una settimana di monitoraggio questo bug giù. Stavo ottenendo questo errore solo cercando di compilare uno script importando numpy o panda e stampando "Ciao mondo".

Eventualmente risolto eseguendo prompt dei comandi come amministratore ... Sì.

Spero che questo aiuti qualche povera anima disperata.

2

Ho avuto gli stessi problemi ma ho trovato che queste altre soluzioni non risolvono il problema. tuttavia ho trovato una soluzione come segue:

In primo luogo, la mia situazione può essere un po 'diverso per il PO come sto utilizzando la distribuzione Anaconda Python su Windows 7, e ho usato la linea di comando troppo conda installare pywin32, e quindi utilizzare pip per installare pyinstaller.

ho trovato lo stesso IOError è stata preceduta da questo messaggio di errore in precedenza nel registro di output pyinstaller:

ImportError: No system module 'pywintypes' (pywintypes27.dll) 

La soluzione che fissa entrambi gli errori è stato quello di copiare i file DLL:

pywintypes27.dll 
pythoncom27.dll 

in: C:\<anaconda-dir>\Lib\site-packages\win32

a C:\<anaconda-dir>\Lib\site-packages\win32\lib

Dove <anaconda-dir> o sarà root directory Anaconda:

C:\Users\<username>\AppData\Local\Continuum\Anaconda\ per impostazione predefinita,

o un ambiente è stato impostato per esempio

C:\Users\<username>\AppData\Local\Continuum\Anaconda\envs\<environment-name>

A sono imbattuto in questa risposta grazie alla Tompa here, che ha trovato ha risolto un problema simile in py2exe.