2014-11-11 12 views
8

Tôi đang cố gắng chuyển đổi dự án python của tôi thành một exe sử dụng Py2Exe. Điều đáng chú ý là cx_freeze phàn nàn về ba "mô-đun còn thiếu" giống nhau, cùng với vài tá khác. Vấn đề là, không ai ở bất cứ đâu nói cách giải quyết vấn đề này.Py2Exe "Thiếu mô-đun"

Tôi đang xây dựng trên MS Windows XP 32-bit (VirtualBox).

C:\Documents and Settings\Jason\Desktop\redstring2>python setup.py py2exe 
running py2exe 
running build_py 
creating build 
creating build\lib 
copying redstring.py -> build\lib 

    3 missing Modules 
    ------------------ 
? readline       imported from cmd, code, pdb 
? win32api       imported from platform 
? win32con       imported from platform 
Building shared code archive 'dist\library.zip'. 
Copy c:\windows\system32\python34.dll to dist 
Copy C:\Python34\DLLs\select.pyd to dist\select.pyd 
Copy C:\Python34\DLLs\_ssl.pyd to dist\_ssl.pyd 
Copy C:\Python34\DLLs\_ctypes.pyd to dist\_ctypes.pyd 
Copy C:\Python34\DLLs\_lzma.pyd to dist\_lzma.pyd 
Copy C:\Python34\DLLs\_hashlib.pyd to dist\_hashlib.pyd 
Copy C:\Python34\DLLs\pyexpat.pyd to dist\pyexpat.pyd 
Copy C:\Python34\DLLs\_socket.pyd to dist\_socket.pyd 
Copy C:\Python34\DLLs\_bz2.pyd to dist\_bz2.pyd 
Copy C:\Python34\DLLs\unicodedata.pyd to dist\unicodedata.pyd 

My setup.py như sau.

#!/usr/bin/python python 

from setuptools import setup 
import py2exe 

setup(name="Redstring", 
    version="2.0", 
    description="REDundant STRING generator", 
    author="MousePaw Labs", 
    url="http://www.mousepawgames.com/", 
    author_email="[email protected]", 
    data_files=[("", ["redstring.png", "redstring_interface.glade"])], 
    py_modules=["redstring"], 
    ) 

Đây là dự án Python 3.4 sử dụng GTK + 3 (được xây dựng trong Glade). Nó chỉ chạy trên Ubuntu, và từ python redstring.py, nhưng tôi không thể lấy được thứ để biên dịch thành .exe.

Cho đến nay tôi đã cố gắng import platform, from platform import win32api, và tất cả những thứ tương tự trong cả hai redstring.pysetup.py, cùng với nhập khẩu nền tảng thông qua tùy chọn py2exe trong file cài đặt.

+0

Dự án có chạy dưới cửa sổ không? – Eric

+0

Khẳng định. python redstring.py trong Windows XP cmd mang lại cho nó lên mà không có bất kỳ vấn đề gì cả. – CodeMouse92

+0

Bạn đã thử cách này chưa: http://stackoverflow.com/questions/10098444/py2exe-include-modules-when-should-they-be-managed-manually? – Eric

Trả lời

7

win32api và win32con là một phần của tiện ích mở rộng Python của Mark Hammond (aka pywin32). readline là một module được sử dụng (nếu có) bởi một số mã tương tác với giao diện điều khiển.

Cả hai đường dây đọc và pywin32 là các mô-đun/gói tùy chọn không được yêu cầu tối ưu nhưng sẽ được sử dụng khi có mặt.

Tất cả trong tất cả - py2exe thông báo rằng các mô-đun/gói này được tham chiếu bởi một số mã sẽ được đưa vào exe của bạn (nó thậm chí đề cập đến các mô-đun tham chiếu mod/gói này: cmd, mã, pdb, nền tảng). Tôi hy vọng bạn đã thử nghiệm tập lệnh của mình - trong biểu mẫu 'không được biên dịch', nếu nó hoạt động chính xác hơn bạn có thể bỏ qua những thông báo này một cách an toàn: chúng chỉ là cảnh báo.

Lý do không thực thi được là đường dây 'console = ["redstring"]' hoặc 'windows = ["redstring"]' bị thiếu trong lệnh setup().

+0

Tôi đã thử nghiệm kỹ lưỡng - kịch bản không yêu cầu tất cả, tuy nhiên, py2exe sẽ không tạo ra tệp thi hành trừ khi nó có chúng. – CodeMouse92

+1

Ah, bây giờ tôi thấy vấn đề: bạn đang thiếu dòng 'console = ["redstring"]' trong lời gọi hàm setup(). Điều này chỉ định tệp thực thi mà bạn muốn được tạo. – theller

+0

Vâng, tôi phát hiện ra sau này. Nắm bắt tốt. Trong trường hợp của tôi, cần phải là 'windows = [' redstring ']', do thực tế đây là GUI, nhưng có. Nếu bạn chỉnh sửa câu trả lời của bạn (vì, có, nó hoạt động trên biên dịch kịch bản, nhưng tôi bỏ qua dòng đó, vì vậy không thực thi được), tôi sẽ chấp nhận câu trả lời. – CodeMouse92

8

Vì vậy, nó sẽ xảy ra rằng các thư viện này chưa bao giờ được cài đặt để bắt đầu. Python có thể là "pin được bao gồm", nhưng không đến mức này. Tuy nhiên, tôi trả lời câu hỏi này bởi vì sửa chữa nó không phải là điều rõ ràng nhất trên thế giới đối với một số (bao gồm cả tôi).

Bạn cần cài đặt win32api (hoặc pywin32, vì nó được chính thức gọi) từ Sourceforge (tại thời điểm này, duyệt tệp cho phiên bản mới nhất, vì nút Tải xuống liên kết đến README.txt) Điều đó cũng sẽ giải quyết win32con . (Bạn không thể cài đặt pywin32 từ pip vào lúc này, thật không may.)

readline is not compatible with Windows, nhưng nó yêu cầu. Bạn thực sự phải cài đặt pyreadline, dễ nhất là từ pip install pyreadline.

Điều đó sẽ giải quyết tất cả những vấn đề đó đối với py2exe. Tôi vẫn gặp rắc rối, nhưng đó là rắc rối khác nhau, vì vậy đó là một câu hỏi khác.

Các vấn đề liên quan