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

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

【问题讨论】:

    标签: python pycharm remote-debugging


    【解决方案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)。请注意,这不是通用解决方案,因为它未在任何其他环境/操作系统中进行测试。

              【讨论】:

              猜你喜欢
              • 2015-02-17
              • 1970-01-01
              • 2018-03-02
              • 2015-02-12
              • 2015-09-01
              • 2019-03-18
              • 1970-01-01
              • 2019-09-29
              • 1970-01-01
              相关资源
              最近更新 更多