2013-09-23 37 views
7

Tôi đang cố gắng sử dụng Pyinstaller để tạo mã exe của mã python để dễ dàng phân phối. Mỗi khi tôi thử chạy pyinstaller.py tôi gặp lỗi "[Errno 22] chế độ không hợp lệ ('rb') hoặc tên tệp: ''"pyinstaller [ErrNo 22]

Tôi đã thấy một số bài đăng khác về vấn đề này nói rằng sự cố thường xảy ra gây ra bởi hardcoding trong filepaths để đọc dữ liệu, nhưng tất cả filepaths của tôi được thực hiện bằng cách sử dụng các biến và yêu cầu người dùng nơi các tập tin được đặt.

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

bất kỳ ai có ý tưởng nào về cách tôi có thể bắt đầu sửa lỗi này?

chỉnh sửa: Sử dụng phiên bản 2.1 của PyInstaller

chỉnh sửa: Vì vậy, tôi đã cố gắng thử nghiệm mã của tôi bằng cách tạo này:

import pandas as pd 

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

được đem lại cho tôi những lỗi tương tự.

+0

gì os? ive không bao giờ có bất kỳ vấn đề với nó tôi chỉ callit từ thư mục dự án của tôi 'C: \ pyinstaller \ pyinstaller.py main.py' –

+0

Windows 7 32bit – Wizuriel

+0

là bạn đang chạy nó từ thư mục dự án của bạn? –

Trả lời

1

Cũng cài đặt lại pywin32 và hiện đang làm việc: S chỉ cần đi với nó

+1

Tôi có cùng sự cố và cài đặt lại pywin32 không khắc phục được. – sebo

1

Chỉ cần dành phần tốt hơn của một tuần theo dõi lỗi này xuống. Đã nhận được lỗi này chỉ bằng cách cố gắng biên dịch một tập lệnh nhập khẩu gấu trúc hoặc gấu trúc và in "hello world".

Cuối cùng đã sửa nó bằng cách chạy nhắc lệnh với tư cách quản trị viên ... Yeah.

Hy vọng điều này sẽ giúp một số linh hồn nghèo tuyệt vọng.

2

Tôi có cùng vấn đề nhưng thấy các giải pháp khác không khắc phục được sự cố. Tuy nhiên, tôi đã tìm thấy một sửa chữa như sau:

Trước tiên, tình huống của tôi có thể hơi khác với OP khi tôi đang sử dụng phân phối Anaconda Python trên Windows 7 và sử dụng dòng lệnh conda để cài đặt pywin32 và sau đó sử dụng pip để cài đặt pyinstaller.

Tôi tìm thấy cùng IOError được trước bởi thông điệp này lỗi trước đó trong bản ghi đầu ra PyInstaller:

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

Các giải pháp mà cố định cả lỗi là để sao chép các tập tin DLL:

pywintypes27.dll 
pythoncom27.dll 

ngồi ở: C:\<anaconda-dir>\Lib\site-packages\win32

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

đâu <anaconda-dir> hoặc sẽ được thư mục gốc Anaconda của bạn:

C:\Users\<username>\AppData\Local\Continuum\Anaconda\ theo mặc định,

hoặc một môi trường bạn đã thiết lập ví dụ

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

Một tình cờ gặp câu trả lời này nhờ Tompa here, người tìm thấy nó giải quyết một vấn đề tương tự trong py2exe.