Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用docker向诗歌添加本地包_Python_Docker_Python Poetry - Fatal编程技术网

Python 使用docker向诗歌添加本地包

Python 使用docker向诗歌添加本地包,python,docker,python-poetry,Python,Docker,Python Poetry,我目前正在将一些脚本推送到docker映像,并使用poetry来安装依赖项。我想使用的一个依赖项涉及将其中一个目录构建到我可以导入的模块中。下面是一个例子: poetry-project │ ├ poetry_project │ │ └── ex1.py │ └ dockerfile │ └ pyproject.toml │ └ poetry.lock │ tools ├ python_tools └── pro

我目前正在将一些脚本推送到docker映像,并使用poetry来安装依赖项。我想使用的一个依赖项涉及将其中一个目录构建到我可以导入的模块中。下面是一个例子:

poetry-project
 │   ├ poetry_project
 │   │      └── ex1.py
 │   └ dockerfile
 │   └ pyproject.toml
 │   └ poetry.lock
 │   
 tools
     ├ python_tools
            └── project_tools.py
我想在ex1.py类中执行以下操作:

#ex1.py class
from python_tools import project_tools

project_tools.do_stuff()
我的dockerfile的一个示例:

FROM python:3.6
COPY pyproject.toml pyproject.toml
RUN poetry update
COPY poetry_project/ poetry_project/
CMD ["python3", "/full/path/to/your/script.py"]
最后,我想运行一个命令,比如
docker run python3\u project/ex1.py
,并能够利用project\u工具导入。我已经读到,我可以通过这样做将包添加到pyproject.toml中:

myu-package={path=“/project\u-name/tools/python\u-tools/”}

但是,这似乎对我不起作用,因为我遇到以下错误:

Directory does not seem to be a Python package
任何帮助都将不胜感激。

a)最好指定代码位于容器内的绝对位置:

COPY . /usr/src/mypythonapp
WORKDIR /usr/src/mypythonapp
因此,您的代码将位于/usr/src/mypythonapp中。这个目录将是运行所有命令的基本目录。不需要丑陋的链接
cd xxx&&do xxx&&bla bla

b) 在ex1.py中,可以指定附加的“包含路径”:

c) 您可以在Dockerfile中使用CMD自动运行文件:

FROM python:3.6
COPY pyproject.toml pyproject.toml
RUN poetry update
COPY poetry_project/ poetry_project/
CMD ["python3", "/full/path/to/your/script.py"]

要运行任何python脚本,您可能会看到ENTRYPOINT/CMD组合。