Mr.Hazyzhao 2023-11-30 11:06 采纳率: 90.9%
浏览 46
已结题

pyc构成的docker运行中报No module named错误

在编译好的pyc文件打包好的docker项目中运行py文件,但是出现了No module named xxx error。

Docker 结构如下:

img

其中,源代码文件夹为 ppo_eval,代码文件的结构为:

img

出问题的 RL 文件夹结构为:

img

dockerfile 内容为:

FROM python:3.9.13
ADD . /ppo_eval
WORKDIR /ppo_eval
RUN pip install -r requirements.txt
CMD ["python", "./ppo_eval/evaluate/evaluate_async.py"]

调用的python脚本代码为:

import os
import sys

import numpy as np
import pandas as pd
import torch
import time

sys.path.append("../")
sys.path.append("/home/b121-legion/Projects/ppo_docker/ppo_eval")
print(sys.path)

from RL.actor_network import FcActorBetaRBF
from RL.ppo import PPOAgent

docker run后,报错为:

['/ppo_eval/ppo_eval/evaluate', '/usr/local/lib/python39.zip', '/usr/local/lib/python3.9', '/usr/local/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/site-packages', '../', '/home/b121-legion/Projects/ppo_docker/ppo_eval']
Traceback (most recent call last):
  File "/ppo_eval/./ppo_eval/evaluate/evaluate_async.py", line 14, in <module>
    from RL.actor_network import FcActorBetaRBF
ModuleNotFoundError: No module named 'RL'

但是这个代码直接在终端里运行,和在pycharm里运行,都是没问题的。

  • 写回答

1条回答 默认 最新

  • 无序繁星 2023-11-30 17:29
    关注

    dockerfile用这个看看

    FROM python:3.9.13
    ADD . /ppo_eval
    WORKDIR /ppo_eval
    RUN pip install -r requirements.txt
    ENV PATH=$PATH:/ppo_eval/ppo_eval
    ENV PYTHONPATH=/ppo_eval/ppo_eval
    CMD ["python", "./ppo_eval/evaluate/evaluate_async.py"]
    

    或者改下py文件

    sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), '..'))
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月8日
  • 已采纳回答 11月30日
  • 创建了问题 11月30日