当前位置: 首页 > 知识库问答 >
问题:

Python在导出环境变量时抛出KeyError

邓毅
2023-03-14

我有一个奇怪的例子,我有一个secret.env文件,我把所有的环境变量都设置成这样:

秘密. env

export TWITTER_CONSUMER_KEY="something"
export TWITTER_CONSUMER_SECRET="something"

然后我构建了一个docker文件来导出所有变量并运行应用程序

FROM python:3.8-slim-buster

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
ADD . /app

# Install the dependencies
RUN pip install -r requirements.txt

RUN find . -name \*.pyc -delete

# Export all variables
RUN /bin/bash -c "source secret.env";

# tell the port number the container should expose
EXPOSE 8083

# run the command
ENTRYPOINT ["python", "run.py"]

但是,这将引发一个关键错误:

$ docker run --name fortweet --rm -i -t fortweet:latest bash
Traceback (most recent call last):
  File "run.py", line 1, in <module>
    from app import socketio, app
  File "/app/app/__init__.py", line 65, in <module>
    app = create_app()
  File "/app/app/__init__.py", line 38, in create_app
    my_settings = settings.TwitterSettings.get_instance()
  File "/app/app/setup/settings.py", line 47, in get_instance
    TwitterSettings()
  File "/app/app/setup/settings.py", line 14, in __init__
    self.consumer_key = os.environ["TWITTER_CONSUMER_KEY"]
  File "/usr/local/lib/python3.8/os.py", line 675, in __getitem__
    raise KeyError(key) from None
KeyError: 'TWITTER_CONSUMER_KEY'

当我在我的窗户上运行这个程序时,它工作得很好!

有人能帮我一下吗?

共有1个答案

支铭晨
2023-03-14

您可以使用<code>docker run--env file secret。env…在运行时设置环境变量。有关详细信息,请参阅docker run文档。

RUN退出后,在一个RUN命令中获取文件将不会持久。您也不应该将机密存储在Docker映像中。在构建时将它们排除在外并在运行时应用它们更安全。

 类似资料:
  • 问题内容: 我在致电时设置环境变量时遇到问题。似乎没有设置环境变量。关于如何为Python命令行调用正确设置环境变量的任何建议? 我的目标是运行一个使用从我的Python代码确定的环境变量的脚本: 但是脚本的反应就像从未设置过变量一样 这是我尝试使用Python的交互式解释器进行测试: 输出为: 我认为应该为子流程设置环境,但是显然没有。有关如何更正此问题的任何建议? 问题答案: 命令行上 环境变

  • 我有两个shell脚本: 第一个:<代码>1。sh,其内容如下: 第二:<代码>2。sh,其内容如下: 两者都具有执行权限。当我运行<代码>2时。sh,我希望环境变量PROP由1设置和导出。sh,对。这里怎么了?

  • 问题内容: 在安装gnuplot之前,我先设置环境变量。在安装过程中,出现了问题。 我想删除环境变量。我该如何实现? 问题答案: 是您要查找的命令。

  • 您好,我在react js中有此组件: 我需要导出返回函数中的这一行:作为变量在另一个组件中使用它。 所以我这样做了: 但是我得到了这个错误:意外的令牌,预期的,(47:20) 有人能帮我导出变量吗

  • 本文向大家介绍Python环境变量,包括了Python环境变量的使用技巧和注意事项,需要的朋友参考一下 这是重要的环境变量,Python可以识别它们- 序号 变量与说明 1 PYTHONPATH 它的作用类似于PATH。这个变量告诉Python解释器在哪里可以找到导入程序的模块文件。它应该包括Python源库目录和包含Python源代码的目录。PYTHONPATH有时是由Python安装程序预设的

  • 问题内容: 从调用的构建流程作业中,我尝试了两种方法: 和: 没有运气。 问题答案: 我也为此付出了很多努力,却发现没有干净的方法可以做到这一点。我终于以某种丑陋的方式来做到这一点。 … EnvInject插件神奇 我首先尝试实现EnvironmentContributingAction 并将其添加为,但由于未知原因对我不起作用。 确保在调用的作业中设置“ Flow run需要一个工作区”。