Teredo Blog

“Kompilacja” kodu Python-a

Czasami trzeba udostępnić komuś aplikacje chcąc jednoczenie zachować pewne fragmenty kodu ukryte. Dzieje się tak w przypadku aplikacji stacjonarnych, gdzie użytkownik ściąga sobie cały program by późnij móc go uruchamiać na swoim komputerze bez potrzeby łączenia się gdziekolwiek. W Pythonie jest z tym mały problem bo jest to język interpretowany. Szczerze  mówiąc jest to duży problem bo na dzień dzisiejszy 2018 r. nie ma możliwości by w 100%-tach zabezpieczyć kod pythona przed podglądnięciem.

Bez wchodzenia w szczegóły przy pomocy samego Python-a można “skompilować” kod do postaci nie czytelnej dla człowieka. Dekompilacja takiego kodu nie jest trywialna nawet dla zaawansowanych użytkowników.  W większości przypadków jest to wystarczająca forma.

Kompilowanie wszystkich plików py w bieżącym katalogu:

python -m compileall .

Bibliografia:

  • http://effbot.org/zone/python-compile.htm
  • https://docs.python.org/3/library/compileall.html#module-compileall

O, o … ImportError: DLL load failed: The specified procedure could not be found.

Problem z plikami DLL pod Windows-em gdy używa się bibliotek takich numpy czy OpenCV może przysporzyć sporo problemów. Często problem jest brak standardowych bibliotek VisualStudio, w której była kompilowana dana biblioteka wtedy wystarczy  Visual C++ redistributable 2015  w odpowiedniej wersji lub Universal C Runtime. Choć czasem to nie wystarcza i pojawia się problem jakiej biblioteki nam brakuje i w jakiej powinna być wersji.

Z pomocą przychodzą nam dwa narzędzia.  Dependencywalker – sprawdzanie zależności w Windows.  Jest to bardzo stare narzędzie i nie zawsze umie sobie rozwiązać dobrze wszystkiej zależności. I jest też procmon tutaj można się dowiedzieć jakich i gdzie nasz Python szuka bibliotek i dlaczego to mu się nie udaje.

 

Copyright © 2018 Teredo Blog

Theme by Anders NorenUp ↑