Pycharm всегда "загружает помощников Pycharm" в тот же удаленный интерпретатор Python при запуске
Когда я запускаю PyCharm для удаленного интерпретатора Python, он всегда выполняет "Загрузка помощников PyCharm", даже если IP-адрес удаленного компьютера такой же и уже содержит ранее загруженные помощники. Правильно ли поведение?
9 ответов
Это хорошо известная проблема, которая может стать серьезным препятствием для повышения производительности, особенно если вы используете одноразовые экземпляры в своем рабочем процессе. Это приводит к вынужденному перерыву на кофе по 20 минут каждый раз, когда вы хотите подключиться к удаленной системе. Неприемлемый.
Похоже, PyCharm создает файл build.txt в папке удаленного помощника, в качестве содержимого которого просто используется текущий номер сборки PyCharm, например:
PY-171.4694.38
Таким образом, можно загрузить помощников вручную, используя rsync
на /Applications/PyCharm.app/Contents/helpers/
и, наконец, вручную создайте файл 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
Эта проблема вернулась снова 6 лет спустя с PyCharm 2022.3.2.
Каталог/Applications/PyCharm.app/Contents/helpers/
больше не существует, поэтому предыдущий трюк не работает.
На этот раз это решило просто:
- Закройте PyCharm.
- Удалить
~/.pycharm_helpers
каталог на удаленном сервере. - Перезапустите PyCharm и позвольте ему делать свое дело.
В моем случае Pycharm проецирует несколько проектов на удаленный сервер. Все они застревают, когда один из проектов дает сбой на удаленном сервере. Решение: оставьте только тот, над которым вам нужно работать, и перезапустите PyCharm с помощью «Invalidate caches».
Обратите внимание, что - по крайней мере, до версии 2018.3.x - PyCharm также требует повторной загрузки помощников, когда по какой-то причине также изменяется подключение к локальной сети.
В моем случае я заметил, что если PyCharm продолжает работать, я перевожу свой ноутбук и подключаюсь к другой локальной сети, то следующий сеанс удаленной отладки, который я инициирую, вызовет длительную загрузку помощника. Оказывается, что содержимое каталога помощников, фактически загруженного в этом случае, в точности совпадает с содержимым, уже присутствующим в этом каталоге в удаленной системе (я сравнил их), поэтому такая загрузка совершенно излишня, но PyCharm не может обнаружить это.
Поскольку в PyCharm я не знаю способа обойти или отменить автоматическую загрузку помощников, единственным выходом является полный выход из PyCharm (закрытие всех открытых окон проекта) после каждого изменения сетевого подключения и перезапуск IDE. По моему опыту, это приведет к успешной загрузке помощника в фазе "проверки удаленных помощников", прежде чем фактически снова загрузить всех помощников. Конечно, это очень неприятно, если у вас открыто несколько проектов, но это быстрее, чем ждать (десятки) минут мучительно медленной загрузки помощников для завершения.
Все, что другие респонденты описывают, как действовать при изменении версий PyCharm, верно. Достаточно использовать rsync, ftp, scp или что-то еще, чтобы передать содержимое нового локального helpers
каталог (в Linux - подкаталог, в котором установлено приложение) в удаленную систему (в Linux ~/.pycharm_helpers, где ~ - домашний каталог имени пользователя, используемого для сеанса удаленной отладки), и обновите удаленный build.txt
в каталоге помощников с новой версией PyCharm.
На дворе 2023 год, и, к сожалению, ни один из ответов, упомянутых ранее, больше не работает (по крайней мере, для меня). Что я сделал:
- Удаленный
/root/.pycharm_helpers
(уже упоминалось) - Обновлено
tar
- Извлечено вручную
helpers.tar.gz
Я не знаю, были ли у ОС проблемы со старой версией tar, или это нужно делать вручную, но это работает.
Для меня это сработало, удалив каталог помощников Pycharm из корневой папки.
rm -rf /root/.pycharm_helpers
Это заставляет Pycharm заново загружать все с нуля, но, по крайней мере, он не зацикливается на вспомогательном процессе загрузки.
Просто помните: поскольку это общий каталог для проектов pycharm, если вы удалите его, если у вас есть другие проекты на этом сервере, вам, возможно, придется подождать загрузки помощников и для них. С моими проектами не связывался, Но учитывать надо.
Отключение брандмауэра решило проблему в моем случае (macOS - Mojave). Обратите внимание, что это не общее решение, поскольку оно не тестировалось ни в каких других средах / ОС.
Согласно документам,
PyCharm проверяет версию удаленных помощников при каждом удаленном запуске, поэтому, если вы обновите свою версию PyCharm, новые помощники будут загружены автоматически, и вам не нужно повторно создавать удаленного переводчика.
Быстрое (менее 3 секунд между мной digitalocean) решение, вдохновленное отличным ответом 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