我有一堆Python腳本要由幾個不同的用戶運行。腳本放置在Windows服務器環境中。保護Windows服務器上的python腳本
我希望實現的目標是保護這些腳本,使標準用戶可以運行它們,但是沒有權限讀取/修改/移動它們。
這是甚至可能的,如果是這樣的話,最佳策略是什麼?
在此先感謝。
我有一堆Python腳本要由幾個不同的用戶運行。腳本放置在Windows服務器環境中。保護Windows服務器上的python腳本
我希望實現的目標是保護這些腳本,使標準用戶可以運行它們,但是沒有權限讀取/修改/移動它們。
這是甚至可能的,如果是這樣的話,最佳策略是什麼?
在此先感謝。
您可以考慮分發它 - 將其轉換爲可執行的二進制文件。通過使用PyInstaller來製作可執行文件非常簡單。它可以通過PyPi安裝。約PyInstaller
pip install pyinstaller
一個好處是,你可以寫一個Windows批處理腳本,使您的可執行文件分發。
例子:
@echo off
mkdir dist
mkdir dist/build
pyinstaller^
--onefile^
--windowed^
--workpath=dist\build^
--distpath=dist^
--icon="gui\icon.ico"^
--name="The_Greatest_Prog"^
the_greatest_script.py
rmdir /S /Q dist\build
cd dist
The_Greatest_Prog
PAUSE
這裏會發生什麼事是,PyInstaller你的Python腳本轉換成一個可執行文件,它會顯示一個圖形用戶界面,並具有指定的圖標。如果將參數--onefile
和--windowed
省略,將會有一小堆文件(如DLL和可執行文件)顯示控制檯。閱讀documentation,特別是section about usage。
這個批處理腳本必須位於您的Python腳本的文件夾中,您只需運行它,結果是子文件夾「dist」中的文件「The_Greatest_Prog.exe」。你現在可以把這個可執行文件給你的朋友,而不會讓他們破壞你的代碼。
[編輯]
您也可以使用標準的封裝py_compile
。輸出將是一個擴展名爲「.pyc」的文件。驗證工作目錄是設置爲你的scipt的路徑,並從你喜歡的Python控制檯調用該編譯器。
>>> import py_compile
>>> py_compile.compile("the_greatest_script.py")
然後你會看到文件「the_greatest_script.pyc」您的文件夾,可以通過其他的Python腳本進行分配和進口英寸
沒有辦法讓它們不可讀,但可以同時執行。
您可以使用Cython將Python模塊編譯爲本地庫並僅提供編譯文件;儘管它涉及很多麻煩,並且在某些情況下不起作用。它們仍然可以反編譯爲C代碼,但它大部分是不可讀的。優點:1.編譯的庫可以作爲普通Python模塊導入。
缺點:1.需要額外的設置; 2.在某些情況下不起作用,例如芹菜任務不能駐留在編譯模塊中,因爲:3.你失去了自省能力; 4.追溯基本上是不可讀的。
聽起來很有希望,但在閱讀了這個方法之後,pyinstaller生成的.exe文件似乎很容易恢復爲Python代碼。這不正確嗎? – user3170354
不確定關於exe,但pyc文件可以很容易地反編譯爲py –
你從哪裏閱讀了關於從可執行文件恢復到Python的內容? PyInstaller的文檔甚至說你可以用[PyCrypto](https://pypi.python.org/pypi/pycrypto)加密你的可執行文件,例如使用SHA。 –