2008-10-02 41 views
28

Tôi đã bắt đầu trên một ứng dụng python cá nhân chạy trên máy tính để bàn. Tôi đang sử dụng wxPython như một bộ công cụ GUI. Nếu có nhu cầu về loại ứng dụng này, tôi có thể muốn thương mại hóa nó.Làm thế nào để triển khai một ứng dụng máy tính để bàn Python?

Tôi không có kiến ​​thức về việc triển khai các ứng dụng Python "thực tế", mặc dù trước đây tôi đã sử dụng py2exe với sự thành công khác nhau. Làm thế nào tôi sẽ làm xáo trộn mã? Tôi có thể bằng cách nào đó triển khai chỉ bytecode?

Một giải pháp lý tưởng sẽ không gây nguy hiểm cho tài sản trí tuệ của tôi, sẽ không yêu cầu cài đặt trực tiếp Python (mặc dù tôi chắc chắn nó sẽ cần có một số trình thông dịch được nhúng) và sẽ là nền tảng đa nền tảng (Windows) , Mac và Linux). Có ai biết về bất kỳ công cụ hoặc tài nguyên nào trong lĩnh vực này không?

Cảm ơn.

+3

Làm thế nào để bạn bảo vệ mã python? Vâng ... http://stackoverflow.com/questions/261638/how-do-i-protect-python-code/261817#261817 –

Trả lời

2

Wow, có rất nhiều câu hỏi trong đó:

  • Có thể chạy bytecode (pyc) nộp trực tiếp từ trình thông dịch Python, nhưng tôi đã không nhìn thấy bất kỳ công cụ bytecode obfuscation có sẵn.

  • Tôi không nhận thấy bất kỳ "tất cả trong một" giải pháp triển khai, nhưng:

    • Đối với Windows, bạn có thể sử dụng NSIS (http://nsis.sourceforge.net/Main_Page). Vấn đề ở đây là trong khi OSX/* nix đi kèm với python, Windows thì không. Nếu bạn không sẵn sàng để xây dựng một nhị phân với py2exe, tôi không chắc chắn những vấn đề cấp phép sẽ được xung quanh phân phối của môi trường thời gian chạy Python (chưa kể đến những kỹ thuật).

    • Bạn có thể đóng gói bản phân phối OS X bằng định dạng "gói" và * NIX có các quy ước riêng để cài đặt phần mềm - thường là tập lệnh "cài đặt".

Hy vọng hữu ích.

+2

Mã byte bytecode của Python rất cao và có thể giải mã được; phân phối các tệp .pyc thực sự không phải là bất kỳ hình thức bảo vệ nào bạn muốn dựa vào. –

+0

+1 cho NSIS, tôi đã sử dụng nó cho một trong những dự án của riêng tôi. –

+0

Và có PyInstaller. –

12

Bạn có thể phân phối mã byte bytecode được biên dịch (tệp .pyc) thay vì nguồn. Bạn không thể ngăn chặn sự giải mã trong Python (hoặc bất kỳ ngôn ngữ nào khác, thực sự). Bạn có thể sử dụng một obfuscator như pyobfuscate để làm cho nó khó chịu hơn cho đối thủ cạnh tranh để giải mã mã nguồn bị giải mã của bạn.

Khi Alex Martelli nói in this thread, nếu bạn muốn giữ bí mật mã của mình, bạn không nên chạy mã trên máy của người khác.

IIRC, lần cuối cùng tôi sử dụng cx_Freeze nó tạo ra một DLL cho Windows đã loại bỏ sự cần thiết cho bản cài đặt Python gốc. Đây là ít nhất là giá trị kiểm tra ra.

1

Có lẽ IronPython có thể cung cấp một cái gì đó cho bạn? Tôi đặt cược những tập tin .exe/.dll-có thể được khá bị khóa xuống. Không chắc chắn các tính năng này hoạt động như thế nào trên mono, do đó không có ý tưởng về cách thức hoạt động trên Linux/OS X ...

0

Tôi đã sử dụng py2exe với thành công tốt trên Windows. Mã cần được sửa đổi một chút để phân tích mã chọn tất cả các mô-đun cần thiết, nhưng ngoài ra, nó hoạt động.

Đối với Linux, có một số định dạng quan trọng phân phối:

  • DEB (Debian, Ubuntu và các dẫn xuất khác)
  • RPM (RedHat, Fedora, OpenSUSE)

Debs aren' đặc biệt khó khăn để thực hiện, đặc biệt là khi bạn đã sử dụng distutils/setuptools. Một số gợi ý được đưa ra trong the policy document, ví dụ về cách đóng gói Các ứng dụng Python có thể được tìm thấy trong số repository.

Tôi không có bất kỳ trải nghiệm nào với RPM, nhưng tôi chắc chắn có đủ ví dụ để tìm thấy.

0

Hãy thử sử dụng thiết bị lừa đảo scraZ (http://scraZ.me). Đây là obfuscator cho bytecode, không phải cho mã nguồn. Phiên bản miễn phí có các phương pháp obfuscation tốt nhưng không hoàn hảo. Phiên bản PRO có khả năng bảo vệ rất mạnh mẽ đối với bytecode. (sau khi bytecode obfuscation một decompilation là không thể)

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