在Windows服务器上保护python脚本

在Windows服务器上保护python脚本,python,windows,security,server,Python,Windows,Security,Server,我有一堆Python脚本,由几个不同的用户运行。脚本放置在Windows服务器环境中 我希望实现的是保护这些脚本,使标准用户可以运行它们,但无权读取/修改/移动它们 这是否可能?如果可能,最佳策略是什么 提前感谢。没有办法使它们不可读,而是同时可执行。您可以使用Cython将Python模块编译到本机库中,并且只提供编译后的文件;虽然它涉及很多麻烦,在某些情况下不起作用。它们仍然可以反编译成C代码,但大部分都是不可读的 优点:1。编译后的库可以作为普通Python模块导入 缺点:1。需要额外的设

我有一堆Python脚本,由几个不同的用户运行。脚本放置在Windows服务器环境中

我希望实现的是保护这些脚本,使标准用户可以运行它们,但无权读取/修改/移动它们

这是否可能?如果可能,最佳策略是什么


提前感谢。

没有办法使它们不可读,而是同时可执行。

您可以使用Cython将Python模块编译到本机库中,并且只提供编译后的文件;虽然它涉及很多麻烦,在某些情况下不起作用。它们仍然可以反编译成C代码,但大部分都是不可读的

优点:1。编译后的库可以作为普通Python模块导入


缺点:1。需要额外的设置;2.在某些情况下不工作,例如芹菜任务不能驻留在编译模块中,因为:3。你失去了自省的能力;4.回溯基本上是不可读的。

您可以考虑分发它-将其转换为可执行的二进制文件。通过使用,很容易生成可执行文件。它可以通过PyPi安装

pip安装pyinstaller

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脚本转换为一个可执行文件,该文件将显示GUI并具有指定的图标。如果省略了参数
--onefile
--windowed
,则会有一小部分文件,如DLL和可执行文件,它们将显示控制台。阅读文章,尤其是文章

此批处理脚本必须位于Python脚本的文件夹中,您只需在其中运行它,结果就是子文件夹“dist”中的文件“the_best_Prog.exe”。现在,您可以将此可执行文件提供给您的朋友,而不会让他们破坏您的代码

[编辑]

您也可以使用标准软件包。输出将是一个扩展名为“.pyc”的文件。验证工作目录是否设置为scipt的路径,并从首选Python控制台调用此编译器

>>> import py_compile
>>> py_compile.compile("the_greatest_script.py")

然后,您将在文件夹中看到文件“the_best_script.pyc”,它可以由其他Python脚本分发和导入。

这听起来很有希望,但在阅读了一些有关此方法的内容后,pyinstaller生成的.exe文件似乎相对容易恢复为Python代码。这不是正确的吗?不确定是否有exe,但pyc文件可以轻松反编译到pyc。您在哪里读到关于从可执行文件恢复到Python的内容?PyInstaller的文档甚至说您可以使用加密可执行文件,例如使用SHA。