TypeError:期望str,得到NoneType - Python中Docker运行.env文件问题
我有一个在本地(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还不太熟悉,找不到解决这个错误的方法。
谢谢大家的帮助。
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)