如何从另一个本地Python脚本调用internet Python脚本

如何从另一个本地Python脚本调用internet Python脚本,python,copy-protection,Python,Copy Protection,我有一个Python脚本,可以对数据进行一些复杂的统计计算,我想把它卖掉。我曾考虑过编译它,但我已经读到用py2exe编译的Python可以很容易地进行反编译。所以我尝试了另一种方法,即从互联网上运行脚本 现在,我在文件local.py中的代码如下所示: local.py #imports #define variables and arrays #very complicated code i want to protect 我想得到类似于: 文件local.py: #imports #d

我有一个Python脚本,可以对数据进行一些复杂的统计计算,我想把它卖掉。我曾考虑过编译它,但我已经读到用
py2exe
编译的Python可以很容易地进行反编译。所以我尝试了另一种方法,即从互联网上运行脚本

现在,我在文件
local.py
中的代码如下所示:

local.py

#imports
#define variables and arrays

#very complicated code i want to protect
我想得到类似于:

文件
local.py

#imports
#define variables and arrays

#call to online.py
print(result)
#code protected
#exit(result)
import requests

inputdata = get_data_to_operate_on()

r = requests.post('https://api.gustavo.com/somemagicfunction?apikey=23423h234h2g432j34', data=inputdata)
if r.status_code == 200:
    result = r.json()
    # operate on the resulting JSON here
    ...
文件
online.py

#imports
#define variables and arrays

#call to online.py
print(result)
#code protected
#exit(result)
import requests

inputdata = get_data_to_operate_on()

r = requests.post('https://api.gustavo.com/somemagicfunction?apikey=23423h234h2g432j34', data=inputdata)
if r.status_code == 200:
    result = r.json()
    # operate on the resulting JSON here
    ...
有没有更好的办法?
我希望客户端在看不到代码的情况下运行代码。

web API可以很好地实现这一点,这是一件非常简单的事情。有许多Python框架可以创建简单的httpapi,即使从头开始编写一个只使用低级套接字的框架也不会太难。如果你只想保护代码本身,你甚至不需要安全特性

如果您只想让付费用户访问您的API,那么您需要某种身份验证,比如API密钥。这也是一件很容易做到的事情,并且可以从前面提到的一些框架中免费获得

因此,您的客户机代码可能如下所示:

文件
local.py

#imports
#define variables and arrays

#call to online.py
print(result)
#code protected
#exit(result)
import requests

inputdata = get_data_to_operate_on()

r = requests.post('https://api.gustavo.com/somemagicfunction?apikey=23423h234h2g432j34', data=inputdata)
if r.status_code == 200:
    result = r.json()
    # operate on the resulting JSON here
    ...
此代码执行HTTP POST请求,将
get\u data\u返回的任何数据传递给请求体中的\u operate\u on()
调用。响应的主体是处理的结果,在这段代码中假定为JSON数据,但也可以是其他格式

您可以通过更改请求的路径(“somemagicfunction”部分)或添加其他查询参数来添加各种选项


这可能有助于您从服务器端开始:。这里有一种托管Python服务器代码的方法:

使用API并销售APIKey@OneCricketeer不完全符合这个问题,只是好奇——如果部署是在客户机环境中的前提下进行的呢?在这种情况下,如何保护代码?在这里,带有auth密钥的RESTAPI是一个有效的选项。客户端环境中的任何东西都不应该被认为是安全的,甚至连编译/模糊的代码都不应该被认为是安全的。我觉得这更像是一个关于。。。如果任何人有时间和资源,他们可以反编译他们可以访问的任何代码。将其放在远程服务器上会更安全,但即使如此,代码也只会像远程进入该系统一样安全。它仅适用于windows吗?正如Quanta所说,最好的方法是使用RESTAPI,它可以在所有系统中工作,并且可以为代码保密。还有,我刚遇到。你可以看看。