PyCharm每次启动时都会将"pycharm helpers"上传到相同的远程Python解释器。

24
当我启动远程Python解释器时,PyCharm总是执行"上传PyCharm帮助程序",即使远程机器IP相同且已经包含之前上传的帮助程序。这种行为是否正确?
9个回答

11

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

看起来PyCharm在远程助手文件夹中创建了一个build.txt文件,其中只包含当前PyCharm版本号,例如:

PY-171.4694.38

可以通过在 /Applications/PyCharm.app/Contents/helpers/ 上手动使用 rsync 并最终手动创建一个带有当前构建编号的 build.txt 文件来手动上传 helpers。之后,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

在我的情况下,通过Pycharm将多个项目投射到远程服务器上。当其中一个项目在远程服务器上出现问题时,所有项目都会停滞。解决方案:只保留需要工作的一个项目,并通过"Invalidate caches"重新启动PyCharm。


今年是2022年,“无效缓存”已经解决了我的问题。 - tonysepia

2
这个问题在6年后的PyCharm 2022.3.2版本中再次出现了。
目录/Applications/PyCharm.app/Contents/helpers/已经不存在了,因此之前的技巧不再适用。
这次解决它的方法很简单:
1.退出PyCharm。 2.删除远程服务器上的~/.pycharm_helpers目录。 3.重新启动PyCharm并让它完成其工作。

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

在我的情况下观察到的是,如果在PyCharm仍在运行的情况下,我将笔记本电脑移动并连接到不同的局域网,那么我启动的下一个远程调试会话将触发漫长的helper上传。事实证明,在这种情况下实际上上传的helpers目录的内容与远程系统上该目录中已经存在的内容完全相同(我进行了比较),因此这次上传完全是多余的,但是PyCharm无法检测到这一点。

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

所有其他回答者所描述的更改PyCharm版本时采取的操作步骤都是正确的。只需使用rsync、ftp、scp或其他工具将新的本地helpers目录(在Linux上,它是应用程序安装位置的子目录)的内容传输到远程系统(在Linux上,它是~/.pycharm_helpers,其中~是用于远程调试会话的用户名的主目录),并更新helpers目录中的远程build.txt文件以使用新的PyCharm版本即可。

0

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


这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - Sankumarsingh
这是一个解决方案,适用于至少一些用户(包括我自己),不需要任何进一步的澄清。 - chunjy92

0
根据文档,

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


0
对我来说,这个方法有效,就是从/root文件夹中删除Pycharm助手目录。
rm -rf /root/.pycharm_helpers

这会强制Pycharm从头开始重新上传所有文件,但至少不会停在上传助手的进程。

请记住,由于这是pycharm项目的通用目录,如果您删除此目录且在该服务器上有其他项目,则可能需要等待助手为它们上传。没有影响我的项目,但您需要考虑一下。


0

现在是2023年,不幸的是之前提到的任何答案都不再起作用了(至少对我来说是这样)。我所做的是:

  1. 删除 /root/.pycharm_helpers(已经提到过)
  2. 更新 tar
  3. 手动提取 helpers.tar.gz

我不知道操作系统是否有旧版本的 tar 有问题,或者必须手动完成,但它可以工作。


0

快速(我和DigitalOcean之间少于3秒)解决方案,受到优秀xApple的答案的启发
在远程服务器上:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接