我目前正在尝试围绕我的软件构建和运行 Docker-Image。建筑物成功完成,当我想运行图像但是语句
File "tts_api_graves/app.py", line 6, in <module>
File "/container/tts_api_graves/synthesize_custom.py", line 8, in <module>
from tts_api_graves.utils.synthesis import synthesis
ModuleNotFoundError: No module named 'tts_api_graves'
出现。文件夹结构如下:
Dockerfile
tts_api_graves/
app.py
synthesize_custom.py
utils/
synthesize.py
我知道 import-command 可以放在 as 中from utils.synthesis import synthesis
,因为-folder 与(import-command 所在的位置)utils
位于同一目录中。然而,在位于子文件夹中的文件中,synthesize_custom
还有更多来自 -folder 的导入,这就是为什么决定将父文件夹添加到容器中的我的 python-paths 的原因。因此,上述导入应该可以工作。我的 Dockerfile 如下所示:tts_api_graves
tts_api_graves
FROM pytorch/pytorch:1.0.1-cuda10.0-cudnn7-runtime
WORKDIR /container
RUN export PYTHONPATH="$PYTHONPATH: /container"
ADD . .
RUN apt-get update && \
apt-get install -y libsndfile1 espeak && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY requirements.txt /container
RUN pip install -r requirements.txt
ENV LANG C.UTF-8
CMD python tts_api_graves/app.py
您可以看到,在Dockerfile
我添加了相应的 python-path 的第 3 行中。我什至通过sys.path
它检查了它的存在并成功附加了它。容器内的结构现在是:
container/
Dockerfile
tts_api_graves/
app.py
synthesize_custom.py
utils/
synthesis.py
并附/container
加到我的系统路径中,但导入仍然from tts_api_graves.xy
不起作用。我做错了什么?请不要对我太苛刻,我对 Docker 很陌生。提前谢谢。