Есть ли способ изменить значение pydevd_file_utils.PATHS_FROM_ECLIPSE_TO_PYTHON без необходимости изменения этого файла? - PullRequest
1 голос
/ 03 ноября 2011

Я использую плагин pydev для отладки удаленного приложения.

Это (удаленное) приложение имеет структуру файлов, которая отличается от структуры, в которой работает мой Eclipse.Это приводит к проблемам, когда я устанавливаю точки останова из Eclipse IDE, поскольку сервер отладчика pydev не может сопоставить абсолютный путь файла с файлом в удаленном приложении и, следовательно, точка останова не попадает.

Я нехотите жестко закодировать константу pydevd_file_utils.PATHS_FROM_ECLIPSE_TO_PYTHON, чтобы включить переводы пути к файлу.

Знаете ли вы какой-нибудь способ изменить это значение без изменения файла?

Спасибо!

Ответы [ 4 ]

4 голосов
/ 20 января 2017

На самом деле, с 12 января 2016 года вы можете делать это после того, как Фабио Задрозный объединил этот PR .

import pydevd
from pydevd_file_utils import setup_client_server_paths

MY_PATHS_FROM_ECLIPSE_TO_PYTHON = [
    ('/home/user/local-project', '/remote/path/to/project'),
]
setup_client_server_paths(MY_PATHS_FROM_ECLIPSE_TO_PYTHON)
pydevd.settrace()

Также вы можете установить глобальное отображение этих путей из Eclipse (работает с PyDev 5.5), открыть меню Window > Preferences, выбрать PyDev > Debug > Source Locator.

3 голосов
/ 12 октября 2017

Вы можете сделать это, установив новую переменную среды, такую ​​как:

PATHS_FROM_ECLIPSE_TO_PYTHON='[["client_src_fullpath", "remote_src_fullpath"]]'

В linux просто запустите его перед запуском программы из командной строки, или задайте как глобальную переменную.

В Windows вам нужно будет установить ее как глобальную системную переменную.

Имя переменной: PATHS_FROM_ECLIPSE_TO_PYTHON

Значение переменной: [["client_src_path", "remote_src_path"]]

В качестве альтернативы, вы также можете сделать это в коде, НО вам нужно сделать это ДО того, как вы импортируете pydevd:

import os
os.environ.setdefault("PATHS_FROM_ECLIPSE_TO_PYTHON",'[["client_src_path","remote_src_path"]]')
import pydevd
pydevd.settrace("10.0.2.2", port=5678,stdoutToServer=True, stderrToServer=True, suspend=False,patch_multiprocessing=True)

(я знаю, что это очень старый вопрос, но ни один из ответов не был обновлен до текущего кода)

0 голосов
/ 01 декабря 2011

К сожалению, нет хорошего способа сделать это.В качестве обходного пути я явно заменил функцию NormFileToServer, добавив следующий код в начало моего исходного файла.

def SrcPathMapping(file):
  eclipse_src_path = 'C:\\tmp\\workspace\\test\\Scripts\\'
  server_src_path  = '/home/tester/test/Scripts/'
  return file.replace(eclipse_src_path, server_src_path)

import pysrc.pydevd as pydevd  
pydevd.NormFileToServer = SrcPathMapping 

Это упрощенное отображение достаточно, когда все исходные файлы находятся в одном каталоге.Для правильной реализации функции отображения проверьте NormFileToServer в pydevd_file_utils.

0 голосов
/ 04 ноября 2011

В настоящее время единственный способ указать путь перевода - это отредактировать этот файл (т. Е. В настоящее время для него нет пользовательского интерфейса).

...