Скрипт Python отлично запускается из командной строки, ошибка «файл не найден» при использовании Eclipse и PyDev

#python #eclipse

#python #eclipse

Вопрос:

Структура папок:

 src
  root
  nested
     myprogram.py
     helper.py
     res
        excluded.txt
        whitelist.txt
  

Вариант 1 — Создайте проект PyDev в eclipse. Запуск от конфигурации PyDev. Укажите основной модуль и все остальное. Основной модуль myprogram.py. При запуске с использованием eclipse я получаю сообщение об ошибке —
IOError: [Ошибка 2] Нет такого файла или каталога: ‘.resexcluded.txt ‘
excluded.txt указан как => excluded_words_file = r’.resexcluded.txt ‘, внутри myprogram.py

Случай 2. Запустите скрипт myprogram.py использование командной строки. Работает отлично.

Единственное отличие заключается в том, что Eclipse также использует SVN source control для этого проекта. Итак, я попытался после отключения проекта от репозитория. Но все та же проблема.

Итак, что я могу делать неправильно в настройке Eclipse? Спасибо.

Комментарии:

1. Я думаю, что Eclipse обрабатывает src как рабочий каталог. Попробуйте изменить путь к файлу на excluded_words_file = r'nestedresexcluded.txt' и проверьте, работает ли это.

2. Если вы не хотите изменять жестко заданный путь к файлу, вы также можете перейти в «Выполнить» / «Конфигурации запуска …» , выберите конфигурацию запуска для myprogram.py и измените рабочий каталог на вкладке «Аргументы».

Ответ №1:

Быстрая отладка с :

 import os
print os.getcwd()
  

должно позволить вам увидеть, что eclipse запускается не из того каталога, который вы размещаете сами при вызове из командной строки.

Из модуля python -> щелкните правой кнопкой мыши -> свойства -> настройки запуска / отладки -> запуск python -> аргументы, вы можете изменить рабочий каталог. ИМХО, это не очень хорошая идея, лучше измените программу так, чтобы она считывалась с абсолютного пути, чтобы она работала независимо от того, где развернута.

Комментарии:

1. Спасибо. Я отлаживал, используя это. И да, я изменю программу для чтения по абсолютному пути в моей следующей версии.

Ответ №2:

Для меня это звучит как проблема с путем. Опубликуйте то, что вы видите, когда выполняете

 import sys
print sys.path
  

OP говорит, что sys.path выводит следующее

 C:Documents and Settingssumod_pawgiworkspaceSWCTestersrcrootnested 
C:eclipsepluginsorg.python.pydev.debug_2.1.0.2011052613pysrc 
C:Documents and Settingssumod_pawgiworkspaceSWCTestersrc 
C:Python25Libsite-packages 
C:Python25 
C:Python25DLLs 
C:Python25lib 
C:Python25liblib-tk 
C:Python25libplat-win 
C:WINDOWSsystem32python25.zip 
C:eclipsepluginsorg.python.pydev_2.0.0.2011040403PySrc 
C:Python25Libsite-packagespy2exe
  

Из того, что я вижу, я могу определить как проблему: вашего res каталога нет в вашем path. Это можно исправить одним из двух способов:

  1. выполните sys.path.append('path/to/res/directory')
  2. добавьте res каталог в path в конфигурациях запуска PyDev

или

  1. Щелкните правой кнопкой мыши на файле *.py (в Eclipse), выберите «Запустить как»-> «Запустить конфигурации …»
  2. С правой стороны выберите вкладку «Аргументы».
  3. Проверьте раздел «Рабочий каталог», проверьте выбранный рабочий каталог (все необходимые файлы должны присутствовать там — если нет, нажмите на кнопку «Рабочее пространство» и выберите папку из рабочего пространства)

Комментарии:

1. Спасибо. Вот что написано в моем path — C:Documents и настройкиsumod_pawgiworkspace SWCTestersrc root nested C:eclipsepluginsorg.python.pydev.debug_2.1.0.2011052613pysrc C:Documents и настройкиsumod_pawgiworkspace SWCTestersrc C:Python25Libsite-packages C:Python25 C:Python25DLLs C:Python25lib C:Python25liblib-tk C:Python25libplat-win C:WINDOWSsystem32python25.zip C:eclipsepluginsorg.python.pydev_2.0.0.2011040403PySrc C:Python25Libsite-packagespy2exe

2. Если моя правка не сработает, не стесняйтесь комментировать, и я сделаю все возможное, чтобы помочь