如何锁定 python (.py) 文件进行编辑?

How do I lock a python (.py) file for editing?

我编写了一个自动化程序,用于登录网站以执行特定任务。 .py 文件将提供给一些用户,但我不希望他们能够读取代码并看到用于登录的密码。如何确保他们只能执行文件而不能读取是吗?

你做不到。如果你给你的用户一个密码,无论你多么想隐藏它,总有可能找到它。

您可以通过加密和混淆来稍微增加查找难度,但这只会阻止不懂技术的用户。那些用户可能不会想通过阅读一堆代码来寻找明文密码。

正确的做法是让用户知道自己的密码就可以了。让服务器端阻止人们做他们不应该做的事情(如果你没有,你需要做一个)。为每个用户使用单独的帐户,以便您可以在需要时单独停用它们。

那是不可能的。 Python 文件只是一个文本文件;要执行它,您需要能够阅读它。

在这些情况下,一个好的做法是使用环境变量(有关示例,请参见 here)。您可以在您的计算机上设置一个不属于 Python 文件的环境变量,然后在您的代码中使用

访问它
import os
password = os.environ['NAME_OF_YOUR_ENV_VAR']

一种可能性是拥有一个保存密码的守护进程(服务)运行。在已应用正常安全性的受限用户下,这将是 运行。用户不应该能够访问守护程序用户下的任何内容。

用户有一个 python 程序,它通过 IPC 机制将登录请求传送给守护进程,您可以使用套接字、命名管道等。守护进程代表用户执行任务,并且传回结果。

实用性取决于用户与服务器之间的通信量。如果这是一个交互式任务,就会出现性能问题。

守护程序可能必须是多线程的,具体取决于数量,因此这可能需要大量工作。

一个类似的可能性是守护进程可能是一个网络服务器(使用,比方说,Apache),然后用户使用浏览器访问。这可能更容易编程和维护,但是否可行取决于您的环境。

最好的方法是@cdarke 提供的方法,但更快的方法是将 .py 文件存储在一个隐藏的、受密码保护的文件夹中。

要锁定 Python 脚本使其无法编辑,您可以将 PY 文件编译成 PYC 文件。这确保了用户无法对脚本中的现有代码进行任何更改。 PYC 文件本质上是二进制文件,不能直接读取。下面是将 PY 文件编译成 PYC 文件的代码:

import py_compile

script = "C:\temp\myscript.py"
py_compile.compile(script)

该代码将使 myscript.pyc。 PYC 文件 运行 即使 PY 文件不存在。

来源:https://support.esri.com/en/technical-article/000010321