Как настроить Whoosh в Python2.7

У меня есть две настройки Python на моей машине. Одним из них является Python 2.7.6, поставляемый с Enthought Canopy, и файл 2.7.9, который я скачал с веб-сайта Python.

Я пытался установить Whoosh в обоих из них. Все прошло хорошо. В Enthought я установил его как pip install whoosh, указанный в следующей командной строке, Microsoft Windows [Версия 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Все права защищены.

C:\Пользователи\Администратор>

Я пытался практиковать примеры, приведенные в https://pythonhosted.org/Whoosh/quickstart.html#a-quick-introduction в обоих случаях. В IDLE Python 2.7.9 все работало нормально, но в IDLE Python 2.7.6 Enthought выдает ошибку:

Python 2.7.6 | 64-bit | (default, Sep 15 2014, 17:36:35) [MSC v.1500 64 bit (AMD64)] on win32
    Type "copyright", "credits" or "license()" for more information.
    >>> import whoosh
    >>> from whoosh.index import create_in
    >>> from whoosh.fields import *
    >>> schema = Schema(title=TEXT(stored=True), path=ID(stored=True), content=TEXT)
    >>> ix = create_in("index", schema)

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    ix = create_in("index", schema)
  File "C:\Users\Admin\AppData\Local\Enthought\Canopy\User\lib\site-packages\whoosh\index.py", line 102, in create_in
    return FileIndex.create(storage, schema, indexname)
  File "C:\Users\Admin\AppData\Local\Enthought\Canopy\User\lib\site-packages\whoosh\index.py", line 425, in create
    TOC.create(storage, schema, indexname)
  File "C:\Users\Admin\AppData\Local\Enthought\Canopy\User\lib\site-packages\whoosh\index.py", line 605, in create
    for filename in storage:
  File "C:\Users\Admin\AppData\Local\Enthought\Canopy\User\lib\site-packages\whoosh\filedb\filestore.py", line 81, in __iter__
    return iter(self.list())
  File "C:\Users\Admin\AppData\Local\Enthought\Canopy\User\lib\site-packages\whoosh\filedb\filestore.py", line 518, in list
    files = os.listdir(self.folder)
WindowsError: [Error 3] The system cannot find the path specified: 'index/*.*'
>>> 

Я попытался найти решение в Интернете и попытался исправить Pythonpath.

Но как я его ставил IDLE 2.7.6 вообще не открывался.

Пожалуйста, предложите, как я могу это исправить.

Я открываю IDLE стандартным способом: «Пуск»> «Все программы»> «IDLE» (графический интерфейс Python) для 2.7.9 и «Пуск»> «Все программы»> «Enthought Canopy» (64-разрядная версия)> «IDLE» (64-разрядная версия).

Я устанавливаю PYTHONPATH как «Пуск»> «Компьютер», щелкните правой кнопкой мыши «Дополнительные параметры системы», здесь вкладка «Дополнительно», затем «Переменные среды».


person SUBHABRATA BANERJEE    schedule 25.03.2015    source источник
comment
Необходимы дополнительные сведения: (1) Полная трассировка ошибок; (2) Как именно вы установили whoosh? (3) Как именно вы запускаете IDLE? (4) Что вы делаете с PYTHONPATH, который IIUC блокирует открытие IDLE?   -  person Jonathan March    schedule 25.03.2015
comment
Мои ответы могут не поместиться здесь, поэтому я редактирую вопросы.   -  person SUBHABRATA BANERJEE    schedule 26.03.2015
comment
Вы не указали, какие изменения вы внесли в PYTHONPATH. Тем не менее кажется, что ответ теперь возможен, так что я сделаю это.   -  person Jonathan March    schedule 26.03.2015


Ответы (1)


Когда вы указываете каталог, как вы это делаете с «индексом», это обычно относится к «Текущему каталогу». Сценарий Python никогда не должен делать никаких предположений о том, какой каталог является текущим каталогом при его запуске. Вместо этого вы должны указать полный путь к каталогу (типичная лучшая практика) или явно изменить текущий каталог в своем сценарии, если это необходимо (хорошая практика), или, по крайней мере, четко указать, что нужно изменить каталог перед запуском сценария (приемлемо). Я не знаю, где находится ваш «индексный» каталог, но если предположить, что он находится в том же каталоге, что и ваш скрипт, то самое простое решение — сказать Canopy «Перейти в каталог редактора», когда скрипт находится в редакторе. Эта команда находится в раскрывающемся списке в верхней части панели Python. Вы также можете использовать команду IPython magic %cd, чтобы изменить текущий каталог перед запуском скрипта.

person Jonathan March    schedule 26.03.2015
comment
Спасибо за добрый ответ. Я бы обязательно попробовал ваш ответ. Когда один работает, я немного меньше беспокоюсь, но проблемы нужно исправлять, и если это такая хорошая помощь. Я постараюсь вернуться к вам. - person SUBHABRATA BANERJEE; 27.03.2015
comment
Сэр, я пробовал немного по-другому. У меня была другая машина, на которой я столкнулся с той же проблемой. Я исправил там, как если бы не os.path.exists(indexdir): os.mkdir(indexdir) это исправление, кажется, идет нормально. и в машине я сообщил, что это решение не работает. Я добавил к нему префикс ›› os.chdir(/tmp/). Кажется, все в порядке. Они в порядке? - person SUBHABRATA BANERJEE; 30.03.2015