通过跑步
conda env export > environment.yml
我可以使人们轻松克隆和复制我的环境。
但是我还需要它们设置一些环境变量。使用PHP(Laravel)时,我有一个.env
文件(被git忽略),用户可以在其中放置帐户详细信息,密码,令牌等。提供了一个文件.env.example
,允许用户查看所需的文件。价值观。因此,我使用python类实现了该功能,但在r / learnpython中却对此不满意(“ ...让您的用户可以自己绞死”)。
进一步阅读后,我在项目根目录中创建了一个文件activate
export \
GITHUB_ACCESS_TOKEN="your value goes here",
BENNO="test",
因此,用户现在只需运行source activate
即可注册变量。但是我看到几个问题
activate
已提交,如何保护用户避免意外发布此内容?GITHUB_ACCESS_TOKEN
仍处于活动状态。我希望conda环境可以保留一组单独的环境变量?总而言之,我想要一种干净的简单方法来存储依赖项和可自定义的环境var,从而允许为conda用户进行简单安装,但如果可能的话,还可以为更多的python用户提供安装。这里有哪些好的做法?我能以某种方式在environment.yml中列出var吗?
答案 0 :(得分:1)
我更喜欢您的原始解决方案。只要在README文件和注释中有足够的警告,就忽略“绳索”参数。创建一个防呆系统是不可能的。如果要检查,请添加一个Environment变量,以防止默认环境按原样运行。这样可以确保环境已被修改以供使用,或者至少用户必须查看该文件。
如上所述,强制用户重命名示例文件并进行检查,可以解决此处出现的问题。
答案 1 :(得分:0)
就像@Strom一样,我原来的解决方案还不错。确实按照以下详细说明对其进行了完善。
首先让我们安装python-dotenv
conda install -c conda-forge python-dotenv -n my-environment-name
然后在根目录中创建一个文件env.example
,其中包含用户需要提供的值
GITHUB_ACCESS_TOKEN=PUT_YOUR_TOKEN_HERE
编辑.gitignore
(我选择递归忽略任何.env
)
**/.env
在脚本入口点,引导文件或您认为合适的地方
from dotenv import load_dotenv
load_dotenv()
最后,现在您应该可以通过执行操作从应用程序中的任何位置访问变量
import os
print(os.getenv("GITHUB_ACCESS_TOKEN"))
强烈建议您这样做,因为您通常不想冒险 一些dingus覆盖gitignore并提交一个完整的文件 回购的秘密。通常,您需要让您的部署 解决方案或HashiCorp Vault Vault之类的服务可为您注入环境 var,而不是将文件存储在环境的文件系统中。
因此,请勿在生产环境中处理您的环境文件。
参考:https://github.com/theskumar/python-dotenv
我尚未尝试过的另一种可能的解决方案:https://github.com/direnv/direnv