1

我正在管理一个相当大的 python 项目,它有很多依赖项,旨在在TensorFlow docker 容器中运行。定义要在生产中安装哪些依赖项的常用方法是通过PipenvPoetry等工具生成的锁定文件。创建这样的锁定文件时,您通常指定所有python依赖项,以确保包之间没有冲突。但由于 TensorFlow docker 容器预装了 TensorFlow 及其所有依赖项,我真的希望将这些包从我的锁定文件中排除,以避免重复安装。但是,我仍然希望我的依赖项管理工具在解决锁定文件的依赖项时考虑到某个版本的 TensorFlow。

有没有办法在不将它们包含在锁定文件中的情况下生成用于说明环境中预安装包的锁定文件?

4

1 回答 1

1

如果您将软件包安装到 TensorFlow Docker 映像中,则 TensorFlow 依赖项已被映像名称和标签“锁定”,例如tensorflow/tensorflow:2.0.0. 所以在你Pipfile.

例如,您Dockerfile可能包含:

FROM tensorflow/tensorflow:2.0.0-py3

RUN pip3 install pipenv
COPY Pipfile Pipfile.lock /yourproject
WORKDIR /yourproject

RUN pipenv --three --site-packages
RUN pipenv install 

然后你有 TensorFlow 和所有其他依赖项:

$ docker build . -t yourproject && docker run -it yourproject bash
# build info not shown
root@b04fc204d239:/yourproject# pipenv run python -c "import tensorflow; print(tensorflow.__version__)"
Loading .env environment variables…
2.0.0
于 2019-10-14T09:20:28.603 回答