没有让PyCharm在docker上使用远程解释器

Alo*_*onS 14 pycharm docker docker-compose

当我从我的一个添加远程解释器时docker-compose,它似乎没有成功,并且没有在对话框中显示任何包.当我向调试器添加解释器时,它说:

python packaging tools not found.
Run Code Online (Sandbox Code Playgroud)

然后,如果我点击安装包装工具,显示错误:

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: 
Run Code Online (Sandbox Code Playgroud)

注意,这个解释器已经在使用,我能够远程连接PyCharm,但我已经添加并最终删除了一个自定义网络到容器.

配置远程Python解释器中所述 - "当添加远程Python解释器时,首先将PyCharm助手复制到远程主机".我的猜测出现了问题,因为网络在docker-compose中更新了.

根据我从错误消息中理解,当PyCharm启动解释器时,它会尝试使用/查找该网络 c7b0cc277c94ba5f58f6e72dcbab1ba24794e72422e839a83ea6102d08c40452.

我运行时没有看到任何地方列出的网络:

$ docker network inspect dockeryard_default
Run Code Online (Sandbox Code Playgroud)

所以PyCharm将它存储在某处并且没有更新.我试图删除解释器(使用PyCharm对话框)并将其添加回来 - 相同的结果.

如何摆脱这个网络并使PyCharm能够再次调试?

谢谢.

woo*_*ncl 19

有一个几乎相同的错误,并能够通过它.我做了两件事虽然我不确定哪个是实际的解决方案:

  1. 确保(a)Preferences -> Project -> Project Interpreter -> Path mappings和(b)下的映射都是正确的Run -> Edit Configurations -> <Your_Configuration> -> Path mappings
  2. 删除/删除任何看起来与PyCharm相关的容器(相信这很可能解决了问题).

希望这可以帮助.PyCharm docker-compose似乎适合某些人,并成为其他人真正的PITA.

另一个说明.我从2018年的PyCharm降级到2017.3,因为2018年已经知道了码头工人的漏洞.

编辑:它似乎是docker-compose down从CLI重新引入错误-_-

  • 我做了第二件事,它解决了我的问题.`docker ps -a | grep -i pycharm | awk'{print $ 1}'| xargs docker rm` (25认同)
  • 移除容器,这是我解决的问题 (3认同)

21r*_*1rw 11

选项invalidate cache->Clear downloaded shared indexes还将重新填充 Pycharm 卷。(至少在2021.1)


opy*_*ate 9

如果您仍然在 PyCharm 中看到此内容,2020.2请执行以下操作:

  • 关闭 PyCharm
  • 试试@peterc 的建议:
docker ps -a | grep -i pycharm | awk '{print $1}' | xargs docker rm
Run Code Online (Sandbox Code Playgroud)
  • 再次启动 PyCharm


Cle*_*ter 7

域名注册地址:

{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}
Run Code Online (Sandbox Code Playgroud)

pycharm_build_number 可以在 pycharm 的 about 部分找到(mac OS:Pycharm > About)

很长的故事

我挣扎了很多与PyCharm突然没有找到任何助手更或者任何相关的错误,有时是因为我正在收拾我的容器或卷。例如,运行

docker rm -f `docker container ps -aq`
docker volume rm $(docker volume ls -q)
Run Code Online (Sandbox Code Playgroud)

几乎肯定会让 pycharm 陷入困境。

关于 PyCharm 如何工作的 AFAIK,有:

  • pycharm_helpers与您的 pycharm 内部版本号对应的标签命名的 PyCharm 基础镜像(例如:PY-202.7660.27)
  • 第一次创建 docker 相关的东西时,PyCharm 会创建volumes从这个镜像中获取数据以供以后在容器中使用。例如,在第一次尝试运行远程 docker-compose 解释器后,我myproject_pycharm_helpers_PY-202.7660.27在执行docker volume ls.
  • 运行 docker 解释器时,PyCharm/opt/.pycharm_helpers通过在某个点添加 a-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: {}
Run Code Online (Sandbox Code Playgroud)

当此卷不再正确填充时,您会遇到麻烦。幸运的是,docker volume 文档中有一节“使用容器填充卷”,这正是 PyCharm 在幕后所做的。

为了记录,您可以检查 pycharm_helpers 图像的内容:

$ docker run -it pycharm_helpers:PY-202.7660.27 sh
/opt/.pycharm_helpers #
Run Code Online (Sandbox Code Playgroud)

您最终会进入 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
Run Code Online (Sandbox Code Playgroud)
  • 要使这些助手再次可用,按照 docker 文档,您必须修复卷。这样做:
docker rm {project_name}_pycharm_helpers_{pycharm_build}
docker run -v {project_name}_pycharm_helpers_{pycharm_build}:"/opt/.pycharm_helpers" pycharm_helpers:{tag}
Run Code Online (Sandbox Code Playgroud)

等瞧

  • 我发现“使缓存无效并重新启动”也重新填充了卷。 (4认同)