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 解释器