python 中的部分依赖管理
Partial dependency management in python
我正在管理一个相当大的 python 项目,它有很多依赖项,打算 运行 在 TensorFlow docker container. A common way of defining which dependencies are to be installed in production, is though a lock file generated by a tool like Pipenv or Poetry 中。创建这样的锁文件时,通常会指定 all python 依赖关系,以确保包之间不会发生冲突。但是由于 TensorFlow docker 容器预装了 TensorFlow 及其所有依赖项,我真的很想将这些包从我的锁定文件中排除以避免重复安装。但是,我仍然希望我的依赖项管理工具在解决锁定文件的依赖项时考虑到某个版本的 TensorFlow 的存在。
有没有一种方法可以生成锁定文件来说明环境中预安装的软件包,而无需将它们包含在锁定文件中?
如果您要将软件包安装到 TensorFlow Docker 映像中,则 TensorFlow 依赖项已按映像名称和标签 "locked",例如tensorflow/tensorflow:2.0.0
。因此,请在 Pipfile
.
中指定 other Python 依赖项
例如,您的 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
我正在管理一个相当大的 python 项目,它有很多依赖项,打算 运行 在 TensorFlow docker container. A common way of defining which dependencies are to be installed in production, is though a lock file generated by a tool like Pipenv or Poetry 中。创建这样的锁文件时,通常会指定 all python 依赖关系,以确保包之间不会发生冲突。但是由于 TensorFlow docker 容器预装了 TensorFlow 及其所有依赖项,我真的很想将这些包从我的锁定文件中排除以避免重复安装。但是,我仍然希望我的依赖项管理工具在解决锁定文件的依赖项时考虑到某个版本的 TensorFlow 的存在。
有没有一种方法可以生成锁定文件来说明环境中预安装的软件包,而无需将它们包含在锁定文件中?
如果您要将软件包安装到 TensorFlow Docker 映像中,则 TensorFlow 依赖项已按映像名称和标签 "locked",例如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