2013-09-23 2 views
7

Я пытаюсь использовать Pyinstaller, чтобы сделать exe моего кода на Python, чтобы легко распространять. Каждый раз, когда я пытаюсь запустить pyinstaller.py, я получаю сообщение об ошибке «[Errno 22] неверный режим (« rb ») или имя файла: ''"pyinstaller [ErrNo 22]

Я видел несколько других сообщений по этому вопросу, в которых говорится, что проблема обычно вызванных hardcoding в файлах для чтения данных, но все мои пути к файлам выполняются с использованием переменных и спрашивают пользователя, где находятся файлы.

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

У кого-нибудь есть идеи, как я могу исправить это?

редактировать: Использование версии 2.1 pyinstaller

редактировать: Так что я попытался тестирование моего кода, создавая это:

import pandas as pd 

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

, который дает мне ту же ошибку.

+0

, что ОС? У меня никогда не было проблем с этим, я просто вызываю из каталога проекта 'C: \ pyinstaller \ pyinstaller.py main.py' –

+0

Windows 7 32bit – Wizuriel

+0

вы используете его из папки проекта? –

ответ

1

Ну переустановил pywin32 и теперь работает: S только собирается идти с ним

+1

У меня такая же проблема, и переустановка pywin32 не исправила. – sebo

1

Просто провел большую часть недели отслеживать эту ошибку вниз. Получалась эта ошибка, пытаясь скомпилировать скрипт, импортирующий numpy или pandas, и печать «hello world».

В конечном итоге исправлено его, выполнив командную строку как администратор ... Да.

Надеюсь, это поможет некоторым бедным отчаянным душам.

2

У меня были такие же проблемы, но нашлось, что эти другие решения не устранили проблему. Я тем не менее найти починку следующим образом:

Во-первых, моя ситуация может быть немного отличается от OP, как я использую распределение Anaconda Python на Windows 7, и использовал conda командную строку тоже установить pywin32, и затем используется протокол для установки pyinstaller.

я нашел то же самое IOError предшествовало этому раннее сообщение об ошибке в журнале вывода pyinstaller:

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

Решение, которое фиксируется как ошибки в том, чтобы скопировать DLL файлы:

pywintypes27.dll 
pythoncom27.dll 

, сидящий в: C:\<anaconda-dir>\Lib\site-packages\win32

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

Где <anaconda-dir> будет либо корневой каталог Anaconda:

C:\Users\<username>\AppData\Local\Continuum\Anaconda\ по умолчанию,

или среде вы создали, например,

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

наткнулся этот ответ благодаря Tompa here, который обнаружил, что решить подобную проблему в py2exe.

1

переустановить pywin32 и теперь работать.

sourceforge.net/projects/pywin32/files/pywin32/

найти последние

http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/

шахта выиграть 64 так

получить http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/pywin32-218.win-amd64-py2.7.exe/download

+0

Я могу только догадываться, но я уверен, вы спасли меня хотя бы на 2 дня! – iLoveTux

Смежные вопросы