TypeError:预期为 str,而不是 NoneType - Docker 在 python 中使用 .env 文件运行问题

问题描述 投票:0回答:1

我有一个可以在本地(Windows)正常运行的 python RAG 脚本。

我的理解是问题与basic_rag.py中调用.env文件时有关

os.environ['OPENAI_API_KEY'] = os.getenv('OPENAI_API_KEY')

当我用 docker 运行它时:

TypeError: str expected, not NoneType

这是文件结构:

APP
 chroma
 data
   text.pdf
 .env
 .gitignore
 basic_rag
 Dockerfile
 requirements.txt
 style

Dockerfile 代码是:

FROM python:3.8-slim

WORKDIR /rag-test

COPY ./data  ./data/
COPY ./basic_rag.py ./main.py

COPY ./requirements.txt ./

RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8080

CMD ["python", "main.py"]

我是 Docker 新手,找不到此错误的解决方案。

感谢您的帮助。

python windows docker operating-system .env
1个回答
0
投票

您引用的行没有任何作用,您应该将其删除。

当环境变量尚未设置时,您就会遇到问题。在这种情况下,

os.getenv()
返回
None
。然后,您尝试为环境变量分配值
None
,但环境变量只能有字符串值。

相反,如果环境变量已经设置,则此行从环境中获取当前值,并为相同的环境变量分配相同的值。

因此,该行的唯一功能是在未设置变量时抛出显示的错误。如果是这样的话,您可以给出更清晰的错误:

if 'OPENAI_AI_KEY' not in os.environ:
  logging.critical('OPENAI_AI_KEY environment variable is not set')
  sys.exit(1)
© www.soinside.com 2019 - 2024. All rights reserved.