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

Posted

技术标签:

【中文标题】pycharm 在启动时总是“上传 pycharm 助手”到同一个远程 python 解释器【英文标题】:pycharm always "uploading pycharm helpers" to same remote python interpreter when starts 【发布时间】:2017-04-22 18:05:24 【问题描述】:

当我为远程 python 解释器启动 PyCharm 时,它总是执行“上传 PyCharm 助手”,即使远程机器 IP 相同并且已经包含以前上传的助手。行为是否正确?

【问题讨论】:

【参考方案1】:

这是一个众所周知的问题,可能会成为生产力的主要障碍,尤其是当您在工作流程中使用一次性实例时。每次您想连接到远程系统时,它都会导致强制休息 20 分钟。不可接受。

似乎 PyCharm 在远程助手文件夹中创建了一个 build.txt 文件,其中仅包含当前 PyCharm 内部版本号作为其内容,例如:

PY-171.4694.38

因此,可以通过在/Applications/PyCharm.app/Contents/helpers/ 上使用rsync 手动上传帮助程序,最后使用您当前的内部版本号手动创建一个build.txt 文件。之后,PyCharm 不应尝试重新上传它们。

例子:

 $ rsync -avz /Applications/PyCharm.app/Contents/helpers/ cluster:/home/xapple/.pycharm_helpers/
 $ echo "PY-171.4694.38" > /home/xapple/.pycharm_helpers/build.txt
 $ python /home/xapple/.pycharm_helpers/pydev/setup_cython.py build_ext --inplace

【讨论】:

【参考方案2】:

请注意,至少在 2018.3.x 版本中,当 本地 网络连接因某种原因发生变化时,PyCharm 似乎也需要重新上传帮助程序。

在我的案例中观察到的是,如果在 PyCharm 仍在运行时,我重新定位我的笔记本电脑并连接到不同的 LAN,我启动的下一个远程调试会话将触发冗长的帮助程序上传。事实证明,在这种情况下实际上传的 helpers 目录的内容与远程系统上该目录中已经存在的内容完全相同(我比较了它们),所以这个上传完全是多余的,但是 PyCharm 不能检测到这一点。

由于我知道在 PyCharm 中无法绕过或取消自动帮助上传,唯一的办法是在每次更改网络连接后完全退出 PyCharm(关闭所有打开的项目窗口)并重新启动 IDE。根据我的经验,这将导致帮助器上传在“检查远程帮助器”阶段成功,然后再实际上传所有帮助器。当然,如果您打开了多个项目,这会很烦人,但它比等待(数十)分钟等待极其缓慢的助手上传完成要快。

所有其他响应者描述的在更改 PyCharm 版本时要采取的行动过程都是正确的。使用 rsync、ftp、scp 或其他任何方式将新的本地 helpers 目录(在 Linux 上,应用程序安装的子目录)的内容传输到远程系统(在 Linux 上,~/.pycharm_helpers ,其中 ~ 是用于远程调试会话的用户名的主目录),并将 helpers 目录中的远程 build.txt 更新为新的 PyCharm 版本。

【讨论】:

【参考方案3】:

就我而言,Pycharm 将多个项目投影到远程服务器。当远程服务器上的一个项目出错时,所有这些都会卡住。解决方案:只留下你需要处理的一项,然后通过“Invalidate caches”重新启动 PyCharm。

【讨论】:

【参考方案4】:

根据the docs,

PyCharm 在每次远程运行时都会检查远程助手版本,因此如果您更新 PyCharm 版本,新的助手将自动上传,您无需重新创建远程解释器。

【讨论】:

【参考方案5】:

受excellent xApple's answer启发的快速(我与digitalocean之间的时间不到3秒)解决方案@ 在远程服务器上:

export SOURCE=<your ip>
export PORT=9000
export HELPERS=$HOME/.pycharm_helpers
# PyCharm Help -> About
export BUILD=PY-172.4343.24  # 2017/10/11
cd  $HELPERS
rm -fr *
# my OS - ubuntu, change firewall rules to yours if you're not so lucky
sudo ufw allow from $SOURCE proto tcp to any port $PORT
netcat -l -v -p $PORT | tar xz # here you waiting for connection
# after finish
sudo ufw delete allow from $SOURCE proto tcp to any port $PORT
echo -n $BUILD > build.txt
python $HELPERS/pydev/setup_cython.py build_ext --inplace

在您的工作站上:

export TARGET=<remote server ip>
export PORT=9000
export HELPERS=<path to helpers> # for me it's $HOME/opt/pycharm-2016.3/helpers
cd $HELPERS
tar cfz - . | netcat -v $TARGET $PORT

【讨论】:

【参考方案6】:

关闭防火墙解决了我的问题(macOS - Mojave)。请注意,这不是通用解决方案,因为它未在任何其他环境/操作系统中进行测试。

【讨论】:

这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review 已编辑以适应上述评论。这是至少对某些用户(包括我自己)的解决方案,不需要任何进一步的说明。

以上是关于pycharm 在启动时总是“上传 pycharm 助手”到同一个远程 python 解释器的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 PyCharm 在启动时自动更新 Python 解释器

如何禁用 PyCharm 在启动时自动更新 Python 解释器

如何用pycharm来调试odoo

使用pycharm时文件路径总是不对的问题

Webdriver启动Firefox浏览器后,页面显示空白

pycharm不停地弹出激活框