web-dev-qa-db-ja.com

pycharmは常に同じリモートに "pycharmヘルパーをアップロード" python起動時にインタープリター

リモートのPyCharmを起動するとpythonインタープリターは、リモートマシンのIPが同じで、以前にアップロードされたヘルパーがすでに含まれている場合でも、常に「PyCharmヘルパーのアップロード」を実行します。動作は正しいですか?

18
user155322

これはよく知られた問題であり、特にワークフローで使い捨てインスタンスを使用する場合、生産性の大きな障害となる可能性があります。リモートシステムに接続するたびに、20分の強制コーヒーブレークが発生します。受け入れられない。

PyCharmは、現在のPyCharmビルド番号をコンテンツとして持つリモートヘルパーフォルダーにbuild.txtファイルを作成するようです。たとえば、次のようになります。

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
10
xApple

-少なくともバージョン2018.3.x以降-何らかの理由でlocalネットワーク接続が変更された場合にも、PyCharmはヘルパーの再アップロードを必要とするようです。

私のケースで観察したのは、PyCharmが実行されている間にラップトップを再配置し、-別のLANに接続を移動した場合、次に開始するリモートデバッグセッションが長いヘルパーアップロードをトリガーすることです。この場合、実際にアップロードされたヘルパーディレクトリのコンテンツは、リモートシステムのそのディレクトリに既に存在するコンテンツと完全に同一であることがわかりました(私はそれらを比較しました)。このアップロードは完全に不要ですが、PyCharmはできませんこれを検出します。

PyCharmで自動ヘルパーのアップロードをバイパスまたはキャンセルする方法がわからないため、ネットワーク接続を変更するたびにPyCharmを完全に終了して(開いているすべてのプロジェクトウィンドウを閉じ)、IDEを再起動するしか方法がありません。私の経験では、これにより、ヘルパーのアップロードが実際にすべてのヘルパーを再度アップロードする前に、「リモートヘルパーのチェック」フェーズで成功します。もちろん、複数のプロジェクトを開いている場合、これは大きな煩わしさですが、ヘルパーの苦痛なほど遅いアップロードが完了するまで(数十分)待つよりも高速です。

PyCharmのバージョンを変更するときに他のレスポンダが取るべき行動について説明することはすべて真実です。新しいローカルhelpersディレクトリ(Linuxでは、アプリがインストールされているサブディレクトリ)のコンテンツをリモートシステム(Linuxでは〜)に転送するには、rsync、ftp、scpなどを使用するだけで十分です。 /.pycharm_helpers、ここで〜はリモートデバッグセッションに使用されるユーザー名のホームディレクトリ)、ヘルパーディレクトリのリモートbuild.txtを新しいPyCharmバージョンで更新します。

0
trenchant

優れた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
0
El Ruso

ドキュメント によると、

PyCharmはリモート実行ごとにリモートヘルパーのバージョンをチェックするため、PyCharmのバージョンを更新すると、新しいヘルパーが自動的にアップロードされ、リモートインタープリターを再作成する必要はありません。

0
utapyngo

ファイアウォールをオフにすることで、私の問題(macOS-Mojave)に対処しました。これは他の環境/ OSでテストされていないため、これは一般的なソリューションではないことに注意してください。

0
chunjy92