Затмение удаляет записи из глобального easy_install.pth?

1

У нас возникли некоторые неприятные проблемы с Eclipse, которые, по-видимому, всегда были там, в Windows 7 +, специальная установка python + Eclipse 3.7 и новейший Pydev.

Проблема в том, что если при настройке интерпретатора python вы также добавляете все библиотеки, затем Eclipse или Pydev или кто знает, что удаляет все эти записи из глобального файла easy_install.pth, которые также настроены в Pydev. Это означает, что в Eclipse все работает нормально, но что-то вне его не может работать правильно.

Теперь мне трудно поверить, что никто не заметил, поэтому я думаю, что мы делаем что-то неправильно.

Я также заполнил ошибку, которая еще не получила большого внимания:

https://sourceforge.net/tracker/?func=detail&aid=3446052&group_id=85796&atid=577329

Любая идея, что и почему это может быть? Уже будучи в состоянии точно знать, кто и когда будет модифицировать этот файл, поможет любой предлагаемый инструмент?

EDIT: Я пытаюсь использовать Process Monitor, как это предлагается ниже. Поэтому я запускаю Eclipse, я запускаю простую команду Python, и я получаю что-то вроде этого.

"Время файла", "Всего событий", "Открывает", "Закрывает", "Читает", "Записывает", "Чтение байтов", "Байт записи", "Получить ACL", "Установить ACL", "Другое", "Путь" "0.0000306", "4", "1", "1", "0", "0", "0", "0", "0", "0", "2", "C:\Python25\Lib\сайта-пакеты\простой install.pth"

Так что в основном это было открыто: 1, закрыто: 1, другое: 2. И файл был фактически изменен.

Мое впечатление, что Eclipse просто тупо перезаписывает файл, иначе должны быть некоторые операции чтения, верно?

Это, однако, не очень мне помогает, я могу видеть только Eclipse как процесс, изменяющий файл, а не многое другое.

  • 0
    Хотя у меня нет решения вашей проблемы, я могу дать слово ободрения: FabioZ, автор PyDev, постоянный представитель SO! :)
  • 0
    Полезно знать :) Ну, может быть, это даже не PyDev, но это определенно что-то в Eclipse, и я не понимаю, почему что-то еще в Eclipse коснулось easy_install.pth ..
Показать ещё 5 комментариев
Теги:
pydev

3 ответа

3

Хорошо, я должен сказать, что я не смог воспроизвести это до сих пор в PyDev... знаете ли вы, что только в вашей машине (или у кого-то другого тоже есть такая же проблема)?

Чтобы попытаться воспроизвести его, можете ли вы дать более подробную информацию о своей toolchain: какая ваша версия python и какая версия setuptools? Какие пакеты вы установили? (я чувствую, что виновник на самом деле не Eclipse/PyDev, а какой-то пакет python, который это делает).

Просто отметим, что PyDev просто не делает ничего, связанного с.pth файлами - все, что он делает, запускает ваш скрипт python с настройкой PYTHONPATH в переменных среды для запущенного процесса (так что очень маловероятно, что PyDev пишет этот файл - просто потому, что он ничего не знает о файлах.pth).

Одна вещь, которая может помочь в достижении ее корня: вы можете попытаться сделать этот файл неприемлемым (вы должны иметь возможность изменять свои разрешения, чтобы вы не могли его изменить), затем попытайтесь воспроизвести и посмотреть, получаете ли вы некоторые где-то ошибка (потому что если кто-то попытается написать ее, будет исключение, потому что вы не получите разрешения на это).

  • 0
    Все (но не всегда) в офисе страдали этой проблемой, по-видимому, и в течение нескольких лет. Я также не думаю, что это Eclipse / PyDev, но выполнение команды из командной строки ведет себя хорошо, выполнение той же команды в Eclipse - нет. И это только происходит, я настроил PyDev со всеми доступными модулями python. Если я оставлю эту конфигурацию пустой, то easy_install.pth не будет затронут, и именно поэтому я указывал пальцем здесь ...
  • 0
    Вы пытались сделать его неписываемым, чтобы увидеть, как он себя ведет?
Показать ещё 2 комментария
2

Так как вы находитесь на окнах, почему бы не использовать монитор процесса? Включите его, отфильтруйте файлы, а затем установите. Он будет регистрировать, кто касается файла и в какой последовательности. Это должно найти вашего виновника.

0

Я действительно не нашел исправления для реальной проблемы, но, по крайней мере, я нашел workardound.

Теперь я должен хранить в текстовом файле все имена яиц, которые должны находиться в sys.path во время выполнения. Прежде чем делать что-либо еще, я беру этот список, присоединяюсь к этим путям с правильным путем пакетов сайтов и добавляю то, что отсутствовало в sys.path.

Кажется, что это сработало, но если я удалю некоторые библиотеки (например, pyqt), даже если они будут добавлены, я все равно получаю som-ошибки, поэтому до сих пор что-то не хватает...

    import pkg_resources
    import sys

    from distutils.sysconfig import get_python_lib
    from os import path
    from psi.devsonly.utils import filename_to_list


    #TODO: there appears to be an issue with QT removing the entries
    def update_sys_path():
        """Make sure that the sys path contains all the entries needed
        """
        site_packages = get_python_lib()
        req = pkg_resources.Requirement.parse('psi.devsonly')
        wea = pkg_resources.resource_filename(req, 'windows_easy_install.pth')
        ppack_list = filename_to_list(wea)

        for p in ppack_list:
            full_name = path.join(site_packages, p)
            # the lower() is necessary or the entries are not found
            if full_name.lower() not in sys.path:
                print("adding to the path the entry %s" % full_name)
                sys.path.insert(0, full_name)
            else:
                print("%s already present in the path" % full_name)
  • 0
    Если изменение sys.path внутри запущенного скрипта python заставляет его работать, это реальный признак того, что не PyDev пишет этот файл, а ваш собственный скрипт ...
  • 0
    Эмм, не уверен, потому что я на самом деле не пытался запустить его из Eclipse. И я не понимаю, почему это будет указанием, возможно, Eclipse напишет это, когда процесс завершится или до его запуска, мой трюк сработает в любом случае.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню