“魅力永远”;“上传魅力助手”;当启动时,发送到同一个远程python解释器

“魅力永远”;“上传魅力助手”;当启动时,发送到同一个远程python解释器,python,pycharm,remote-debugging,Python,Pycharm,Remote Debugging,当我启动PyCharm for remote python解释器时,它总是执行“上载PyCharm帮助程序”,即使远程机器IP相同并且已经包含以前上载的帮助程序。行为正确吗?根据 PyCharm在每次远程运行时都会检查远程助手的版本,因此如果您更新PyCharm版本,新的助手将自动上载,您无需重新创建远程解释器 这是一个众所周知的问题,可能是生产力的主要障碍,尤其是在工作流中使用一次性实例时。每次你想连接到远程系统时,都会有20分钟的强制咖啡休息时间。不能接受 PyCharm似乎在远程帮助器文件

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

根据

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


这是一个众所周知的问题,可能是生产力的主要障碍,尤其是在工作流中使用一次性实例时。每次你想连接到远程系统时,都会有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
灵感来源于
在远程服务器上:

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
导出源代码=
出口端口=9000
导出帮助程序=$HOME/.pycharm\u帮助程序
#PyCharm帮助->关于
导出版本=PY-172.4343.24#2017/10/11
cd$助手
rm-fr*
#我的OS-ubuntu,如果你不那么幸运的话,把防火墙规则改成你的
sudo ufw允许从$SOURCE协议tcp到任何端口$port
netcat-l-v-p$PORT | tar xz#您在这里等待连接
#完成后
sudo ufw delete允许从$SOURCE协议tcp到任何端口$port
echo-n$BUILD>BUILD.txt
python$HELPERS/pydev/setup\u cython.py build\u 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
导出目标=
出口端口=9000
导出助手=#对我来说是$HOME/opt/pycharm-2016.3/HELPERS
cd$助手
焦油cfz-.|netcat-v$目标$端口

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

请注意,由于某种原因,本地网络连接发生变化时,PyCharm(至少最晚版本为2018.3.x)似乎也需要重新上传帮助程序

在我的案例中,我观察到,如果在PyCharm保持运行的同时,我重新定位我的笔记本电脑并连接到另一个LAN,我发起的下一个远程调试会话将触发冗长的helper上载。事实证明,在本例中实际上载的helpers目录的内容与远程系统上该目录中已经存在的内容完全相同(我对它们进行了比较),因此此上载是完全多余的,但PyCharm无法检测到这一点

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


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

这并不能回答问题。一旦你有足够的钱,你将能够;相反编辑以适应上述评论。这是一个解决方案,至少有一些用户(包括我自己),不需要任何进一步的澄清。