Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pyinstaller [ErrNo 22]

I'm trying to use Pyinstaller to make an exe of my python code to easily distribute. Every time I try run pyinstaller.py I get an error "[Errno 22] invalid mode ('rb') or filename: ''"

I've seen a few other posts on this issue saying the problem is usually caused by hardcoding in filepaths for reading data, but all my filepaths are done using variables and asking the user where the files are located.

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: ''

anyone have any ideas how I can start to fix this?

edit: Using version 2.1 of pyinstaller

edit: So I tried testing my code by creating this:

import pandas as pd

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

which is giving me the same error.

like image 592
Wizuriel Avatar asked Sep 23 '13 20:09

Wizuriel


2 Answers

I had the same issues but found these other solutions did not fix the problem. I did however find a fix as follows:

First, my situation may be a little different to the OP as I'm using the Anaconda Python distribution on Windows 7, and used the conda command line too to install pywin32, and then used pip to install pyinstaller.

I found the same IOError was preceded by this earlier error message in the pyinstaller output log:

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

The solution that fixed both errors was to copy the DLL files:

pywintypes27.dll
pythoncom27.dll 

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

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

Where <anaconda-dir> will either be your root Anaconda directory:

C:\Users\<username>\AppData\Local\Continuum\Anaconda\ by default,

or an environment you have set up e.g.

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

A came across this answer thanks to Tompa here, who found it solved a similar problem in py2exe.

like image 81
Mr Kriss Avatar answered Oct 19 '22 20:10

Mr Kriss


Well reinstalled pywin32 and now working :S just going go with it

like image 33
Wizuriel Avatar answered Oct 19 '22 19:10

Wizuriel