2011-11-18 47 views
37

Tôi đã tìm kiếm lên và xuống, nhưng không thể tìm thấy trình biên dịch de sẽ hoạt động với Python 2.7 .pyc. Có ai biết một trong đó sẽ làm việc cho Python 2,7? Cảm ơnDecompile Python 2.7 .pyc

Trả lời

13

này nghe có vẻ như nó hoạt động: http://code.google.com/p/unpyc/

Issue 8 nói nó hỗ trợ 2,7: http://code.google.com/p/unpyc/updates/list

UPDATE (2013/09/03) - Như đã trình bày trong các ý kiến ​​và câu trả lời khác, bạn nên xem xét https://github.com/wibiti/uncompyle2 hoặc https://github.com/gstarnberger/uncompyle thay cho unpyc.

+1

Ngay cả sau khi áp dụng các bản vá trong vấn đề 8, tôi không thể có được điều này để làm việc với Python 2.7. –

+1

treo với ngoại lệ trên Python 2.7 - sử dụng Uncompyle2 – RichVel

+0

Tôi đã bỏ phiếu bình chọn vì câu trả lời không hoạt động với python 2.7 –

3

Ned Batchelder đã đăng một short script sẽ hủy một tệp .pyc và tháo rời bất kỳ đối tượng mã nào bên trong, vì vậy bạn sẽ có thể xem mã bytecode của Python. Dường như với các phiên bản mới hơn của Python, bạn sẽ cần phải nhận xét các dòng đặt modtime và in nó (nhưng không nhận xét dòng đặt moddate).

Quay trở lại nguồn Python sẽ khó hơn một chút, mặc dù về mặt lý thuyết có thể. Tôi giả sử tất cả các chương trình này làm việc cho các phiên bản cũ của Python làm điều đó.

83

Trong trường hợp bất cứ ai vẫn đang vật lộn với điều này, như tôi là tất cả các buổi sáng ngày hôm nay, tôi đã tìm thấy một giải pháp mà làm việc cho tôi:

Uncompyle

Hướng dẫn cài đặt:

git clone https://github.com/gstarnberger/uncompyle.git 
cd uncompyle/ 
sudo ./setup.py install 

Khi chương trình được cài đặt (lưu ý: chương trình sẽ được cài đặt vào các gói Python có thể truy cập trên toàn hệ thống của bạn, vì vậy nó phải nằm trong số $PATH), bạn có thể khôi phục các tệp Python của mình như sau:

uncompyler.py thank_goodness_this_still_exists.pyc > recovered_file.py 

Trình giải mã thêm một số tạp âm chủ yếu ở dạng nhận xét, tuy nhiên tôi thấy nó đáng ngạc nhiên trong sạch và trung thành với mã gốc của tôi. Bạn sẽ phải xóa một dòng văn bản nhỏ bắt đầu bằng +++ ở gần cuối của tệp được khôi phục để có thể chạy mã của bạn.

+5

Lưu thịt xông khói của tôi!Tôi sẽ thêm nó vào virtualenv của tôi từ bây giờ ... – kaleissin

+5

Lưu thịt xông khói của tôi quá. Tôi đã là một thiên tài chạy rm * .py để dọn dẹp các tệp pyc của tôi trước khi cam kết git. Nhưng ít nhất nó để lại cho tôi với các tập tin .pyc của tôi trong một chút trớ trêu. – Eloff

+2

@Eloff Tệp .gitignore chứa * .pyc sẽ dễ dàng hơn là phải lưu ý đến việc xóa * .pyc trước mỗi lần commit! Có thể là bạn biết rằng và có chút ám ảnh về việc có một môi trường sạch mặc dù, như nhiều lập trình viên có xu hướng: D – Milosz

26

Decompyle ++ (pycdc) xuất hiện để làm việc cho một loạt các phiên bản python: https://github.com/zrax/pycdc

Ví dụ:

git clone https://github.com/zrax/pycdc 
cd pycdc 
make 
./bin/pycdc Example.pyc > Example.py 
+4

True lifesaver, chỉ có một cái mà làm việc cho tôi. –

+2

bạn phải chạy 'cmake'. trước khi bạn chạy make –

+0

Phiên bản trực tuyến của trình dịch ngược này có sẵn tại đây http://www.javadecompilers.com/pyc. Không cần cài đặt. –

11

Đây là một công cụ tuyệt vời để dịch ngược file PYC.

Nó được mã hóa bởi tôi và hỗ trợ python 1,0-3,3

của nó dựa trên uncompyle2 và decompyle ++

http://sourceforge.net/projects/easypythondecompiler/

+4

Ngọt ngào! Đáng nói đến, đây là một cho người dùng windows :) – tutuDajuju

+1

Mã nguồn không có sẵn trên SourceForge, vì vậy tôi sẽ bỏ qua công cụ này ngay bây giờ. – Bludzee

+0

Công cụ rất tiện dụng! Biên dịch tệp Python 2.7 của tôi mà không gặp bất kỳ vấn đề nào dưới rượu trên Linux Mint – sly