【发布时间】:2020-01-31 15:24:13
【问题描述】:
假设我的当前目录中有一个名为credentials.json 的文件、一个环境变量MY_CREDENTIALS=credentials.json 和一个通过os.getenv('MY_CREDENTIALS') 使用此环境变量的脚本main.py。
现在假设我创建了一个子文件夹并在其中放置如下内容:/subfolder/my_other_script.py。
如果我打印os.getenv('MY_CREDENTIALS'),那么我确实得到credentials.json,但我不能使用这个文件,因为它在我的根目录中(不在/subfolder 中)。那么,尽管它位于根目录中,但如何使用此文件?唯一对我有用的是在/subfolder 中制作credentials.json 的副本,但是我将拥有该文件的多个副本,我不希望这样。
感谢您的回复!
【问题讨论】:
-
为什么不将环境变量设置为绝对路径?
-
@bluesummers 因为我需要将它部署到云端,同时让我的 Dockerfile 和 YAML 尽可能简单。
-
by YAML 我相信你的意思是 docker-compose 文件,所以如果你多讲一点用例,它会更容易提供帮助
-
你不能在变量
MY_CREDENTIALS=/path/to/credentials.json中放一个目录吗?在开发时放置一个不同的(可能是相对的)路径,并在生产 Docker 实例中放置一个硬绝对路径。 -
@tripleee 如果我复制凭据的绝对路径,它会给我这样的信息:
/home/user/Desktop/myproject/credentials.json然后我可以在my_other_script.py中完美使用它。但是如果我复制相对路径,我只会得到credentials.json,然后我会遇到问题,因为子文件夹无法访问此文件。
标签: python python-3.x environment-variables credentials