我有一个可以在本地(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 新手,找不到此错误的解决方案。
感谢您的帮助。
您引用的行没有任何作用,您应该将其删除。
当环境变量尚未设置时,您就会遇到问题。在这种情况下,
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)