虽然我有编写自己的东西的经验,这些东西永远不会离开我的机器,但我现在正在编写一个 python 应用程序,我想将其与 cx_Freeze 捆绑在一起并作为
.exe
分发。我遇到的问题是,如何在不暴露客户端机密的情况下将其与该应用程序一起发送?也许这是不可能的,我正在以错误的方式去做,但我只是不知道足以确定。
现在,我将客户端 ID、秘密和回调 URL 隐藏在我已 gitignored 的
.env
文件中。该应用程序在 Pycharm 中运行良好。当我用 cx_Freeze 打包并在我的 venv 中运行 .exe
时,它也能正常工作。
我试着告诉 cx_Freeze 只包含
src
中的文件(我的.env
与src
在同一个父文件夹中)但我相信'include_files'
只是指示cx_Freeze包含文件,而不包括only那些文件。
据我所知,
'excludes'
仅适用于包或模块,而不适用于单个文件。
from cx_Freeze import setup, Executable
from glob import glob
files = glob('src/*') # No files in ../sql/ root
build_options = {
'include_files': list(zip(files, files)),
'excludes': ["tkinter", "unittest"]
}
executables = [
Executable('main.py', base='console', target_name='spotify_shuffler')
]
setup(name='spotify_shuffler',
version='1.0',
description='Spotify Shuffler',
options={'build_exe': build_options},
executables=executables)
但是,鉴于当我以
.exe
运行该应用程序时该应用程序运行良好,我相信 .env
文件仍与它捆绑在一起,因此如果您知道自己在做什么,则可以窃取。但是,Spotipy 文档非常清楚地表明执行身份验证需要客户端密码。
所以....我该怎么办?我有什么办法可以安全地附加
.env
文件,或者以其他方式提供秘密吗?我会以完全错误的方式解决这个问题吗?我想可以告诉用户只用 Spotify 注册他们自己该死的应用程序并使用他们自己的客户端秘密,但我试图让非技术人员尽可能简单。
很抱歉,如果这种方式太模糊而无法理解,我尽力做到具体,但我不确定正确的方式。任何帮助是极大的赞赏。谢谢!