Docker环境下FastAPI项目无法安装Pokemon TCG SDK问题排查
问题:Docker部署的FastAPI项目无法导入Pokemon TCG SDK
我在基于FastAPI构建的后端项目中集成Pokemon TCG API的Python SDK,采用Docker部署。项目能正常启动,但在路由文件中导入pokemontcgsdk时提示ModuleNotFoundError: No module named 'pokemontcgsdk'。
我的配置文件内容
requirements.txt
fastapi[all]==0.81.0 uvicorn[standard]==0.17.6 pytest pymongo==4.3.3 jwtdown-fastapi>=0.2.0 pytest==7.1.2 black==23.3.0 pokemontcgsdk
Dockerfile.dev
FROM python:3.10-bullseye RUN python -m pip install --upgrade pip ADD https://github.com/ufoscout/docker-compose-wait/releases/download/2.9.0/wait /wait RUN chmod +x /wait WORKDIR /deps COPY requirements.txt requirements.txt RUN python -m pip install -r requirements.txt WORKDIR /app CMD /wait && uvicorn main:app --reload --host 0.0.0.0
docker-compose.yaml
volumes: mongo-data: external: true services: mongo: image: mongo:6 volumes: - mongo-data:/data/db environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: password fastapi: build: context: PokemonTCG dockerfile: Dockerfile.dev ports: - 8000:8000 volumes: - ./PokemonTCG:/app environment: MONGO_URL: mongodb://admin:password@mongo WAIT_HOSTS: mongo:27017 WAIT_BEFORE: 5 WAIT_TIMEOUT: 60
路由测试代码
from fastapi import( Response, APIRouter, Request ) import requests from pokemontcgsdk import( Card, Set, Type, Supertype, Subtype, Rarity )
解决方案
1. 检查依赖安装日志
重新构建镜像并查看安装过程:
docker-compose build fastapi
重点查看pip install -r requirements.txt步骤,确认pokemontcgsdk是否成功安装。如果出现网络超时或找不到包的错误,可在Dockerfile的pip安装命令中添加国内镜像源:
RUN python -m pip install -r requirements.txt --index-url https://pypi.tuna.tsinghua.edu.cn/simple
2. 指定SDK具体版本
在requirements.txt中添加SDK的具体版本号(比如当前最新稳定版1.3.6),避免版本匹配问题:
pokemontcgsdk==1.3.6
3. 检查本地挂载目录是否存在同名文件夹
确保本地PokemonTCG目录下没有名为pokemontcgsdk的文件夹,否则Python会优先尝试导入本地目录中的模块,而非系统安装的SDK包。
4. 调整Dockerfile工作目录逻辑
将依赖安装步骤切换到/app目录执行,避免潜在的路径问题:
FROM python:3.10-bullseye RUN python -m pip install --upgrade pip ADD https://github.com/ufoscout/docker-compose-wait/releases/download/2.9.0/wait /wait RUN chmod +x /wait WORKDIR /app COPY requirements.txt . RUN python -m pip install -r requirements.txt CMD /wait && uvicorn main:app --reload --host 0.0.0.0
内容的提问来源于stack exchange,提问作者Tahmid Baro Bhuiyan
相关产品推荐
相关产品推荐

