如何发布需密钥运行的PyPi包且不公开OPENAI密钥
不公开OpenAI密钥发布PyPI包的可行方案
让用户自行提供密钥
这是最稳妥的通用方案,你的包完全不存储密钥,而是在运行时通过以下几种方式让用户传入:- 命令行参数:用
argparse在启动脚本里接收密钥参数import argparse parser = argparse.ArgumentParser() parser.add_argument("--openai-key", required=True, help="你的OpenAI API密钥") args = parser.parse_args() # 后续用args.openai_key调用OpenAI接口 - 环境变量:读取系统环境变量
OPENAI_API_KEYimport os openai_key = os.getenv("OPENAI_API_KEY") if not openai_key: raise ValueError("请先设置OPENAI_API_KEY环境变量") - 本地配置文件:让用户创建
.env或config.ini这类本地配置文件,你的包读取其中的密钥。如果用.env,可以借助python-dotenv库:
记得在包的依赖声明(比如import os from dotenv import load_dotenv load_dotenv() openai_key = os.getenv("OPENAI_API_KEY")pyproject.toml或setup.py)里加入python-dotenv。
- 命令行参数:用
严格避免密钥进入包代码或版本库
绝对不要把密钥硬编码到任何包源码文件中,同时在.gitignore里添加.env、config.ini等配置文件,确保这些包含密钥的文件不会被提交到代码仓库或上传到PyPI。中转请求(进阶方案)
如果你不想让用户直接持有OpenAI密钥,可以搭建自己的后端服务,让用户使用你提供的专属API密钥,你的后端验证用户身份后,用你自己的OpenAI密钥去调用接口。不过这个方案需要额外的后端开发和维护成本,适合有资源支撑的场景。
内容的提问来源于stack exchange,提问作者Pedro Caribê
相关产品推荐
相关产品推荐

