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

wn9m85ua  于 2023-02-12  发布在  PyCharm
关注(0)|答案(7)|浏览(694)

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

hc2pp10m

hc2pp10m1#

这是一个众所周知的问题,可能会成为生产力的主要障碍,尤其是当您在工作流中使用可处置示例时。它会导致每次您想要连接到远程系统时都要强制休息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
t8e9dugd

t8e9dugd2#

在我的例子中,Pycharm将几个项目投影到远程服务器上,当其中一个项目在远程服务器上出错时,所有项目都会卡住。只留下一个你需要处理的并通过“使缓存无效”重新启动PyCharm。

ct3nt3jp

ct3nt3jp3#

请注意--至少在2018.3.x版本中-- PyCharm在本地网络连接由于某种原因也发生变化时似乎也需要重新上传助手。
在我的例子中,我观察到,如果在PyCharm仍然运行时,我重新定位我的笔记本电脑并连接到不同的LAN,我启动的下一个远程调试会话将触发冗长的helper上载。结果是,在本例中实际上载的helper目录的内容与远程系统上该目录中已经存在的内容完全相同(我比较了他们),所以这个上传是完全多余的,但PyCharm无法检测到这一点。
据我所知,在PyCharm中没有绕过或取消自动助手上传的方法,唯一的办法就是完全退出PyCharm(关闭所有打开的项目窗口)并重新启动IDE。根据我的经验,这将导致助手上传在“检查远程助手”阶段成功,然后才真正再次上传所有助手。当然,如果你打开了多个项目,这是一个很大的麻烦,但是这比等待(数十)分钟让慢得令人痛苦的助手上传完成要快。
其他响应者描述的更改PyCharm版本时要采取的操作过程都是真的,使用rsync、ftp、scp或其他方法传输新的本地helpers目录的内容就足够了(在Linux上,是应用程序安装位置的子目录)到远程系统(在Linux上,~/.pycharm_helpers,其中~是用于远程调试会话的用户名的主目录),并使用新的PyCharm版本更新helpers目录中的远程build.txt

w8rqjzmb

w8rqjzmb4#

根据the docs
PyCharm在每次远程运行时都会检查远程助手的版本,所以如果你更新PyCharm版本,新的助手会自动上传,你不需要重新创建远程解释器。

zvms9eto

zvms9eto5#

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
qojgxg4l

qojgxg4l6#

关闭防火墙解决了我的问题(MacOS -莫哈韦)。请注意,这不是一个通用的解决方案,因为它没有在任何其他环境/OS中测试。

ff29svar

ff29svar7#

这个问题在6年后的PyCharm 2022.3.2中再次出现。
目录/Applications/PyCharm.app/Contents/helpers/不再存在,因此前面的技巧不起作用。
这次解决这个问题的方法很简单:
1.退出PyCharm。
1.删除远程服务器上的~/.pycharm_helpers目录。
1.重新启动PyCharm,让它做它的事情。

相关问题