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

1

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

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

Случай 1 - Создайте проект PyDev в eclipse. Запустите программу PyDev. Укажите основной модуль и каждый. Главный модуль - myprogram.py. При запуске с использованием eclipse я получаю ошибку - IOError: [Errno 2] Нет такого файла или каталога: '.\Res\excluded.txt' excluded.txt указан как = > excluded_words_file = r '.\res\excluded.txt', внутри myprogram.py

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

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

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

  • 0
    Я думаю, что Eclipse рассматривает src как рабочий каталог. Попробуйте изменить путь к excluded_words_file = r'nested\res\excluded.txt' и проверьте, работает ли он.
  • 0
    Если вы не хотите изменять жестко закодированный путь к файлу, вы также можете перейти в Run / Run Configurations ..., выбрать конфигурацию запуска для myprogram.py и изменить рабочий каталог на вкладке Arguments.
Теги:

2 ответа

0
Лучший ответ

Быстрый отладка с помощью

import os
print os.getcwd()

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

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

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

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

import sys
print sys.path

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

C:\Documents and Settings\sumod_pawgi\workspace\SWCTester\src\root\nested 
C:\eclipse\plugins\org.python.pydev.debug_2.1.0.2011052613\pysrc 
C:\Documents and Settings\sumod_pawgi\workspace\SWCTester\src 
C:\Python25\Lib\site-packages 
C:\Python25 
C:\Python25\DLLs 
C:\Python25\lib 
C:\Python25\lib\lib-tk 
C:\Python25\lib\plat-win 
C:\WINDOWS\system32\python25.zip 
C:\eclipse\plugins\org.python.pydev_2.0.0.2011040403\PySrc 
C:\Python25\Lib\site-packages\py2exe

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

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

ИЛИ

  • Щелкните правой кнопкой мыши на файле *.py(в Eclipse), выберите "Запустить как" → "Запустить конфигурации..."
  • С правой стороны выберите вкладку "Аргументы".
  • Проверьте раздел "Рабочий каталог", проверьте выбранный рабочий каталог (все необходимые файлы должны присутствовать там - если не нажать кнопку "рабочая область" и выбрать папку из рабочей области)
  • 0
    Благодарю. Это то, что говорит мой путь - C: \ Documents and Settings \ sumod_pawgi \ workspace \ SWCTester \ src \ root \ nested C: \ eclipse \ plugins \ org.python.pydev.debug_2.1.0.2011052613 \ pysrc C: \ Documents and Настройки \ sumod_pawgi \ workspace \ SWCTester \ src C: \ Python25 \ Lib \ site-packages C: \ Python25 C: \ Python25 \ DLLs C: \ Python25 \ lib C: \ Python25 \ lib \ lib-tk C: \ Python25 \ lib \ plat-win C: \ WINDOWS \ system32 \ python25.zip C: \ eclipse \ plugins \ org.python.pydev_2.0.0.2011040403 \ PySrc C: \ Python25 \ Lib \ site-packages \ py2exe
  • 0
    Если моя редакция не работает, не стесняйтесь комментировать, и я сделаю все возможное, чтобы помочь

Ещё вопросы

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