2008-10-02 16 views
28

Zacząłem na osobistej aplikacji python, która działa na pulpicie. Używam wxPython jako zestaw narzędzi GUI. W przypadku zapotrzebowania na tego typu aplikacje, chciałbym go skomercjalizować.Jak wdrożyć aplikację komputerową Python?

Nie mam wiedzy na temat wdrażania "prawdziwych" aplikacji w języku Python, chociaż w przeszłości używałem py2exe z różnym sukcesem. Jak mogę zaciemnić kod? Czy mogę jakoś wdrożyć tylko kod bajtowy?

Idealne rozwiązanie nie naraziłoby na szwank mojej własności intelektualnej (kodu źródłowego), nie wymagałoby bezpośredniej instalacji Pythona (choć jestem pewien, że będzie musiał mieć wbudowany interpreter) i byłoby wieloplatformowe (Windows , Mac i Linux). Czy ktoś wie o jakichkolwiek narzędziach lub zasobach w tym obszarze?

Dzięki.

+3

Jak chronić kod Pythona? No cóż ... http://stackoverflow.com/questions/261638/how-do-i-protect-python-code/261817#261817 –

Odpowiedz

2

Wow, istnieje wiele pytań tam:

  • Możliwe jest uruchomienie kodu bajtowego (.pyc) plik bezpośrednio z interpretera Pythona, ale nie widziałem żadnych narzędzi zaciemniania kodu bajtowego dostępny.

  • nie jestem świadomy jakiegokolwiek "wszystko w jednym" rozwiązanie rozmieszczenia, ale:

    • W systemie Windows można użyć NSIS (http://nsis.sourceforge.net/Main_Page). Problem polega na tym, że podczas gdy OSX/* nix jest dostarczany z pythonem, Windows tego nie robi. Jeśli nie chcesz budować pliku binarnego z py2exe, nie jestem pewien, jakie problemy z licencją będą związane z dystrybucją środowiska wykonawczego Python (nie wspominając o technicznych).

    • Możesz spakować dystrybucję OS X używając formatu "bundle", a * NIX ma własne konwencje instalowania oprogramowania - zazwyczaj skrypt "make install".

nadzieja, że ​​był pomocny.

+2

Kod bajtowy Pythona jest bardzo wysoki i łatwo ulega dekompilacji; dystrybucja plików .pyc nie jest żadną formą ochrony, na której chcesz polegać. –

+0

+1 dla NSIS, używam go do jednego z moich własnych projektów. –

+0

I jest PyInstaller. –

12

Można rozpowszechniać skompilowany kod bajtowy Pythona (pliki .pyc) zamiast źródła. Nie można zapobiec dekompilacji w Pythonie (ani w żadnym innym języku, naprawdę). Możesz użyć obfuscatora, takiego jak pyobfuscate, aby bardziej irytujące dla konkurentów było rozszyfrowanie dekompilowanego źródła.

Jako, że Alex Martelli mówi in this thread, jeśli chcesz zachować swój kod w tajemnicy, nie powinieneś go uruchamiać na komputerach innych osób.

IIRC, po raz ostatni użyłem cx_Freeze utworzył DLL dla Windows, który usunął konieczność instalacji natywnego Pythona. To jest co najmniej warte sprawdzenia.

1

Może IronPython może zapewnić coś dla ciebie? Założę się, że te pliki .exe/.dll mogą być dość zablokowane. Nie wiem, jak takie funkcje działają na mono, więc nie mam pojęcia, jak to działa na Linux/OS X ...

0

Używam py2exe z dobrym skutkiem w systemie Windows. Kod musi zostać nieco zmodyfikowany, aby analiza kodu obejmowała wszystkie potrzebne moduły, ale poza tym działa.

Jak dla systemów Linux, istnieje kilka ważnych formatów dystrybucji:

  • DEB (Debian, Ubuntu i innych pochodnych)
  • RPM (RedHat, Fedora, openSUSE)

DEB aren” t szczególnie trudne do wykonania, szczególnie gdy używasz już narzędzi distutils/setup. Niektóre wskazówki są podane w the policy document, przykłady do pakowania Aplikacje Python można znaleźć w repository.

Nie mam żadnego doświadczenia z RPM, ale jestem pewien, że istnieje wystarczająco dużo przykładów, które można znaleźć.

0

Spróbuj użyć obruska scraZ (http://scraZ.me). To jest obfuscator dla kodu bajtowego, a nie dla kodu źródłowego. Darmowa wersja ma dobre, ale nie doskonałe metody zaciemniania. Wersja PRO ma bardzo bardzo silną ochronę dla kodu bajtowego. (po zakodowaniu kodu bajtowego dekompilacja jest niemożliwa)

Powiązane problemy