2009-12-24 7 views
5

Một tập lệnh python đơn giản cần chạy trên máy chủ Windows không có cài đặt python.Máy chủ Windows không thể chạy ứng dụng được tạo bởi py2exe

Tôi đã sử dụng py2exe, tạo ra một thư mục con mạnh khỏe, với script.exe chạy tốt trên máy cục bộ.
Tuy nhiên, khi tôi chạy nó trên máy chủ (Windows Server 2003 R2), nó tạo ra điều này:
Hệ thống không thể thực thi chương trình được chỉ định.

và ERRORLEVEL là 9020.

Bất kỳ ý tưởng?

+0

Bạn cũng có thể thử câu hỏi này trên ServerFault.com. – DOK

+0

Bạn đang cố gắng chạy nhị phân 32 bit trên hệ điều hành 64 bit (hoặc ngược lại)? –

+0

Cả hai máy đều có 32 bit. –

Trả lời

1

Tôi không tìm thấy nguyên nhân gây ra sự cố, nhưng sử dụng python 2.5 với py2exe trên cùng một tập lệnh hoạt động tốt trên máy chủ.

Tôi đoán có gì đó sai với py2exe dưới 2.6.

+1

Py2exe hoạt động tốt trên Python2.6, tôi đã sử dụng nó nhiều lần. Bạn phải cẩn thận với phiên bản nào của tệp thời gian chạy Visual C của Microsoft mà bạn có trong ứng dụng phân tán của mình. Các chi tiết được giải thích ở bước 5 của hướng dẫn py2exe: http://www.py2exe.org/index.cgi/Tutorial#Step5 –

2

Có thể thiếu một số DLL bắt buộc. Hãy thử sử dụng depends.exe để xác định những gì có thể bị thiếu. Nó có thể là một msvc-something-something.dll

+0

Đó là dự đoán ban đầu của tôi, nhưng không may là tất cả các dll đều có sẵn. –

1

Vì Python 2.6 được xây dựng dựa trên Visual Studio 2008, máy đích cũng phải có các thư viện Visual Studio 2008, có sẵn từ Visual C++ 2008 Redistributable package.

Tôi xác nhận rằng trên bản dựng Windows XP hoặc Server 2003 (không có trong đó có Visual Studio 2008 redistributable), một Python 2.6 py2exe thực thi sẽ không thành công với lỗi nói trên, nhưng sau khi cài đặt gói redistributable chạy bình thường.

+0

Xin chào. Tôi khá chắc chắn rằng Visual C++ 2008 redistributable gói * SP1 * bạn liên kết đến là phiên bản sai. SP1 có phiên bản DLL runtime C sai trong đó, và sẽ không hoạt động. Xem câu trả lời của tôi bên dưới để biết phiên bản phù hợp. –

+0

Thú vị. Tôi nghĩ rằng tôi đã thử nghiệm nó với SP1 redistributable, nhưng dường như tôi đã nhầm lẫn. Cảm ơn vì sự đúng đắn của bạn. –

6

Để py2exe hoạt động, bạn phải bao gồm phiên bản đúng của thời gian chạy Microsoft C DLL với ứng dụng của bạn.

Đối python2.6, đây là phiên bản MSVCR90.DLL 9.0.21022.8, có thể được lấy từ Microsoft Visual C++ 2008 Redistributable Package:

http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en

Chú ý rằng SP1 của trình cài đặt này có chứa một phiên bản khác nhau của DLL và sẽ không hoạt động.

tôi đã dành một khoảng thời gian đầu năm nay giải thích điều này một cách cẩn thận trong hướng dẫn py2exe, vì vậy tôi sẽ chỉ liên kết đến rằng: http://www.py2exe.org/index.cgi/Tutorial#Step5