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

如何锁定python(.py)文件进行编辑?,python,python-3.x,passwords,password-protection,Python,Python 3.x,Passwords,Password Protection,我写了一个自动化程序,它登录到一个网站来执行某项任务。py文件将提供给许多用户,但我不希望他们能够读取代码并查看用于登录的密码。如何确保他们只能执行文件而不能读取它?您不能这样做。如果你给你的用户一个密码,不管你怎么隐藏它,总是有可能找到它 通过加密和模糊处理,您可能会使查找变得稍微困难一些,但这只会阻止不懂技术的用户。而且这些用户可能不会想通过一堆代码来寻找明文密码 正确的方法是这样做,如果用户知道自己的密码就可以了。让服务器端的位阻止人们做他们不应该做的事情(如果你没有,你需要做一个)。为每

我写了一个自动化程序,它登录到一个网站来执行某项任务。py文件将提供给许多用户,但我不希望他们能够读取代码并查看用于登录的密码。如何确保他们只能执行文件而不能读取它?

您不能这样做。如果你给你的用户一个密码,不管你怎么隐藏它,总是有可能找到它

通过加密和模糊处理,您可能会使查找变得稍微困难一些,但这只会阻止不懂技术的用户。而且这些用户可能不会想通过一堆代码来寻找明文密码


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

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

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

import os
password = os.environ['NAME_OF_YOUR_ENV_VAR']

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

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

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

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


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

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

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

import py_compile

script = "C:\\temp\\myscript.py"
py_compile.compile(script)
该代码将使myscript.pyc。即使PY文件不存在,PYC文件也会运行


来源:

如果我使用环境变量,我必须到每个用户的机器上正确设置它?@Chandral:是的,当然,如果他们知道如何打开Python文件并查看源代码,他们可以很容易地找到环境变量的名称,然后是密码。是的,这是正确的。我以为您只是想共享Python文件,而不公开密码。如果您需要在其他人的计算机上添加密码作为环境变量,那么您又回到了原点。。。这里有一个类似于您的。@GregSadetsky我也在用openpyxl从excel文件中读取数据。我想我可以把凭证放在一个单元格里,然后锁定该单元格,以便在该文件中编辑。@Chandral:你肯定可以在Excel中“解锁”一个单元格吗?如果你的Python脚本可以读取密码,那么你的用户也可以。谢谢Matti。问题是,我的同事将使用网站上超级用户的凭据来执行任务,因此我无法限制他们的权限。@Chandral:如果你不信任你的用户,你就不能给他们密码。你不能改变这一点。您可以按照我的建议,创建一个小型web服务,它位于您的用户和网站之间,只允许他们做您希望他们做的事情。网络服务会把密码保密。你能告诉我一些在线资源来学习如何做吗?@Chandral:如何制作网络服务?有无数种方法可以做到这一点。可能只需要谷歌。谢谢,我也会试试这个。