python运行时,远程解释器无响应

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python运行时,远程解释器无响应相关的知识,希望对你有一定的参考价值。

参考技术A 找到这行,StrictHostKeyCheckingask修改为,StrictHostKeyCheckingno保存退出,再配置Pycharm即可。
这个配置是将ssh连接的询问取消。StrictHostKeyChecking=no最不安全的级别,当然也没有那么多烦人的提示了,相对安全的内网测试时建议使用。如果连接server的key在本地不存在,那么就自动添加到文件中(默认是known_hosts),并且给出一个警告。
StrictHostKeyChecking=yes最安全的级别,如果连接与key不匹配,就拒绝连接,不会提示详细信息。在Jenkins持续集成的部署时,也会经常会涉及到修改他,当然也可以在使用ssh命令时,通过参数修改,但是这样会使你的命令变得不好看,不够优雅。

Pycharm 2017.1 EAP Python控制台和远程Docker解释器无法协同工作

我使用minimum / docker-django-mysite映像创建了一个Pure Python项目来测试Python Console功能。

我使用本地Python解释器测试了Python控制台,它运行正常。

但是当我将解释器更改为远程Docker解释器时,我得到的是以下输出:

22c422193587:python /opt/.pycharm_helpers/pydev/pydevconsole.py 0 0

PyDev控制台:开始。无法连接到控制台进程。

进程以退出代码137结束(由信号9中断:SIGKILL)

现在,我已经能够在运行时(在它超时之前)将bash shell执行到容器中,并且看到控制台进程已经启动并正在随机端口进行侦听。

此外,该临时容器的Docker日志显示两个数字,其中一个是正在侦听的同一本地端口(所以我猜另一个与要连接的预期外部主机端口或类似的东西相关)。

时间过去了,进程和容器被杀死了。

顺便说一句,Docker Container适用于Run / Debug配置,因此它能够启动远程进程。

我已经能够使用pydevd启动从容器到IDE的调试服务器回调,并正常调试代码,所以我不知道什么可能是错的。

我认为短暂的容器没有暴露其端口,所以我不知道IDE如何连接到该容器上的进程。

谢谢你的帮助。

答案

我有这个确切的问题,问题似乎是我的docker容器中的环境变量,以及PyCharm自动生成的docker容器的克隆。

这是在Django中解决这个问题的特设,首先打开:

首选项>构建执行部署>控制台> Django控制台

默认的Django Console启动脚本:

import sys
print('Python %s on %s' % (sys.version, sys.platform))
print(sys.executable)
import django;
print('Django %s' % django.get_version())
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
if 'setup' in dir(django): django.setup()
import django_manage_shell; django_manage_shell.run(PROJECT_ROOT)

您需要手动注入环境变量,否则解释器将无法读取POSTGRES_ENV_,如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': os.environ["POSTGRES_ENV_DB_NAME"],
        'USER': os.environ["POSTGRES_ENV_POSTGRES_USER"],
        'PASSWORD': os.environ["POSTGRES_ENV_POSTGRES_PASSWORD"],
        'HOST': os.environ["POSTGRES_PORT_5432_TCP_ADDR"],
        'PORT': os.environ["POSTGRES_PORT_5432_TCP_PORT"],
    }
}

所以只需运行:

docker exec -it CONTAINER_ID python -c 'import os; print(os.environ)'

并将输出复制到剪贴板。最后,更新您的Django控制台启动脚本:

import os
os.environ = {"POSTGRES_ENV_DB_NAME":foo, "POSTGRES_ENV_POSTGRES_USER":bar}    

import sys
print('Python %s on %s' % (sys.version, sys.platform))
print(sys.executable)
import django;
print('Django %s' % django.get_version())
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
if 'setup' in dir(django): django.setup()
import django_manage_shell; django_manage_shell.run(PROJECT_ROOT) 

确保不需要手动设置PROJECT_ROOT&WORKING_DIR_AND_PYTHON_PATHS。

以上是关于python运行时,远程解释器无响应的主要内容,如果未能解决你的问题,请参考以下文章

VS Code - 我可以禁用“无 Python 解释器”警告吗?

Pycharm 2017.1 EAP Python控制台和远程Docker解释器无法协同工作

pycharm 在启动时总是“上传 pycharm 助手”到同一个远程 python 解释器

无法上传到 NodeMCU Lua

Pycharm 使用 Docker Container Python 作为远程解释器

通过 SSH 为远程 Python 解释器配置 Visual Studio Code