当我从我的
docker-compose
之一添加远程解释器时,它似乎没有成功,并且在对话框中没有显示任何包。当我向调试器添加解释器时,它会显示:
python packaging tools not found.
然后如果我点击安装打包工具,会显示错误:
ERROR: for dockeryard_pycharm_helpers_1
Cannot start service pycharm_helpers: network not found
Starting dockeryard_postgres_1 ...
Starting dockeryard_nginx_1 ...
Starting dockeryard_redis_1 ...
Starting dockeryard_postgres_1 ...
Starting dockeryard_nginx_1 ...
Starting dockeryard_pycharm_helpers_1
Starting dockeryard_redis_1
Starting dockeryard_worker_1 ...
Starting dockeryard_worker_1
Starting dockeryard_pycharm_helpers_1
ERROR: for dockeryard_pycharm_helpers_1 Cannot start service pycharm_helpers: network not found
ERROR: for pycharm_helpers Cannot start service pycharm_helpers: network not found
[31m
ERROR [0m:
注意,这个解释器已经在使用中,我能够使用 PyCharm 远程连接,但我已经向容器添加并最终删除了自定义网络。
如配置远程 Python 解释器中所述 - “添加远程 Python 解释器时,首先将 PyCharm 帮助程序复制到远程主机”。我猜自从 docker-compose 中的网络更新后出现了问题。
根据我从错误消息中了解到的信息,当 PyCharm 启动解释器时,它会尝试使用/查找该网络
c7b0cc277c94ba5f58f6e72dcbab1ba24794e72422e839a83ea6102d08c40452
。
当我运行时,我没有在任何地方看到该网络列出:
$ docker network inspect dockeryard_default
因此 PyCharm 将其存储在某处,并且未随更改进行更新。 我尝试删除解释器(使用 PyCharm 对话框)并将其添加回来 - 相同的结果。
如何摆脱这个网络并使 PyCharm 能够再次调试?
谢谢。
{project_name}_pycharm_helpers_{pycharm_build_number}
卷已被删除或损坏。
要重新填充它,请运行:
docker volume rm {project_name}_pycharm_helpers_{pycharm_build_number}
docker run -v {project_name}_pycharm_helpers_{pycharm_build_number}:/opt/.pycharm_helpers pycharm_helpers:{pycharm_build_number}
pycharm_build_number 可以在 pycharm 的“关于”部分找到(Mac OS:Pycharm > 关于)
我在 PyCharm 中遇到了很多,突然找不到帮助程序或任何相关的错误,有时是因为我正在清理容器或卷。例如,跑步
docker rm -f `docker container ps -aq`
docker volume rm $(docker volume ls -q)
几乎肯定会让 pycharm 陷入麻烦。
据我了解 PyCharm 的工作原理,有:
pycharm_helpers
的 PyCharm 基础映像,带有与您的 pycharm 版本号对应的标签(例如:PY-202.7660.27)volumes
,从该映像中获取数据以供以后在容器中使用。例如,在第一次尝试运行远程 docker-compose 解释器后,我在执行 myproject_pycharm_helpers_PY-202.7660.27
时看到新创建的 docker volume ls
卷。/opt/.pycharm_helpers
来将此卷添加到 -v myproject_pycharm_helpers_PY-202.7660.27:/opt/.pycharm_helpers
目录中。例如,使用 docker-compose,您可以看到添加了 -f /Users/clementwalter/Library/Caches/JetBrains/PyCharm2020.2/tmp/docker-compose.override.1508.yml
,当您实际查看此文件时,您会看到:version: "3.8"
services:
local:
command:
- "python"
- "/opt/.pycharm_helpers/pydev/pydevconsole.py"
- "--mode=server"
- "--port=55824"
entrypoint: ""
environment:
PYCHARM_MATPLOTLIB_INTERACTIVE: "true"
PYTHONPATH: "/opt/project:/opt/.pycharm_helpers/pycharm_matplotlib_backend:/opt/.pycharm_helpers/pycharm_display:/opt/.pycharm_helpers/third_party/thriftpy:/opt/.pycharm_helpers/pydev"
PYTHONUNBUFFERED: "1"
PYTHONIOENCODING: "UTF-8"
PYCHARM_MATPLOTLIB_INDEX: "0"
PYCHARM_HOSTED: "1"
PYCHARM_DISPLAY_PORT: "63342"
IPYTHONENABLE: "True"
volumes:
- "/Users/clementwalter/Documents/myproject:/opt/project:rw"
- "pycharm_helpers_PY-202.7660.27:/opt/.pycharm_helpers"
working_dir: "/opt/project"
volumes:
pycharm_helpers_PY-202.7660.27: {}
当该卷不再正确填充时,您就会遇到麻烦。 幸运的是,docker 卷文档 有一个“使用容器填充卷”部分,这正是 PyCharm 在幕后所做的事情。
为了记录,您可以检查 pycharm_helpers 图像的内容:
$ docker run -it pycharm_helpers:PY-202.7660.27 sh
/opt/.pycharm_helpers #
您最终进入 pycharm_helpers 目录并在此处找到所有帮助程序:
/opt/.pycharm_helpers # ls -la
total 5568
drwxr-xr-x 21 root root 4096 Dec 17 16:38 .
drwxr-xr-x 1 root root 4096 Dec 17 11:07 ..
-rw-r--r-- 1 root root 274 Dec 17 11:07 Dockerfile
drwxr-xr-x 5 root root 4096 Dec 17 16:38 MathJax
-rw-r--r-- 1 root root 2526 Sep 16 11:14 check_all_test_suite.py
-rw-r--r-- 1 root root 3194 Sep 16 11:14 conda_packaging_tool.py
drwxr-xr-x 2 root root 4096 Dec 17 16:38 coverage_runner
drwxr-xr-x 3 root root 4096 Dec 17 16:38 coveragepy
-rw-r--r-- 1 root root 11586 Sep 16 11:14 docstring_formatter.py
drwxr-xr-x 4 root root 4096 Dec 17 16:38 epydoc
-rw-r--r-- 1 root root 519 Sep 16 11:14 extra_syspath.py
drwxr-xr-x 3 root root 4096 Dec 17 16:38 generator3
-rw-r--r-- 1 root root 8 Sep 16 11:14 icon-robots.txt
-rw-r--r-- 1 root root 3950 Sep 16 11:14 packaging_tool.py
-rw-r--r-- 1 root root 1490666 Sep 16 11:14 pip-20.1.1-py2.py3-none-any.whl
drwxr-xr-x 2 root root 4096 Dec 17 16:38 pockets
drwxr-xr-x 3 root root 4096 Dec 17 16:38 profiler
-rw-r--r-- 1 root root 863 Sep 16 11:14 py2ipnb_converter.py
drwxr-xr-x 3 root root 4096 Dec 17 16:38 py2only
drwxr-xr-x 3 root root 4096 Dec 17 16:38 py3only
drwxr-xr-x 7 root root 4096 Dec 17 16:38 pycharm
drwxr-xr-x 4 root root 4096 Dec 17 16:38 pycharm_display
drwxr-xr-x 3 root root 4096 Dec 17 16:38 pycharm_matplotlib_backend
-rw-r--r-- 1 root root 103414 Sep 16 11:14 pycodestyle.py
drwxr-xr-x 24 root root 4096 Dec 17 16:38 pydev
drwxr-xr-x 9 root root 4096 Dec 17 16:38 python-skeletons
drwxr-xr-x 2 root root 4096 Dec 17 16:38 rest_runners
-rw-r--r-- 1 root root 583493 Sep 16 11:14 setuptools-44.1.1-py2.py3-none-any.whl
-rw-r--r-- 1 root root 29664 Sep 16 11:14 six.py
drwxr-xr-x 3 root root 4096 Dec 17 16:38 sphinxcontrib
-rw-r--r-- 1 root root 128 Sep 16 11:14 syspath.py
drwxr-xr-x 3 root root 4096 Dec 17 16:38 third_party
drwxr-xr-x 3 root root 4096 Dec 17 16:38 tools
drwxr-xr-x 5 root root 4096 Dec 17 16:38 typeshed
-rw-r--r-- 1 root root 3354133 Sep 16 11:14 virtualenv-16.7.10-py2.py3-none-any.whl
docker rm {project_name}_pycharm_helpers_{pycharm_build}
docker run -v {project_name}_pycharm_helpers_{pycharm_build}:"/opt/.pycharm_helpers" pycharm_helpers:{tag}
瞧
遇到了几乎相同的错误,并且能够克服它。我做了两件事,但我不确定哪一个是实际的解决方案:
Preferences -> Project -> Project Interpreter -> Path mappings
和 (b) Run -> Edit Configurations -> <Your_Configuration> -> Path mappings
希望这有帮助。 PyCharm
docker-compose
似乎对某些人有用,对另一些人来说则是真正的 PITA。
还有一个注释。我从 PyCharm 2018 降级到 2017.3,因为 2018 年存在已知的 docker bug。
编辑:CLI 中的
docker-compose down
似乎重新引入了错误 -_-
如果您在 PyCharm 中仍然看到此情况
2020.2
,请执行以下操作:
docker ps -a | grep -i pycharm | awk '{print $1}' | xargs docker rm
选项
invalidate cache
-> Clear downloaded shared indexes
也将重新填充 Pycharm 卷。 (至少2021.1)
从 PyCharm 2023.3.3 开始,卷不再按照镜像名称命名,而只是随机分配标识符。
我发现这个问题在使用 Podman 作为 Docker 的直接替代品时表现出来。该卷最初是空的,启动和停止容器将填充该卷
$ podman container ls -a
podman container ls -a
CONTAINER ID ... NAMES
312553e157d1 ... pycharm_helpers_PY-233.13763.11
然后
$ podman container start pycharm_helpers_PY-233.13763.11
$ podman container stop pycharm_helpers_PY-233.13763.11
之后,卷将被填充并且调试按预期进行。