проблема с путями в python: ImportError при вызове zodbconvert (FreeBSD 8.1)

1

Я предполагаю, что это проблема пути python (на FreeBSD 8.1).

Я пытаюсь преобразовать Data.fs в Postgresql с помощью zodbconvert. Ive скачал RelStorage-1.5.0b2 и работает:

/usr/local/Plone/Python-2.6/bin/python zodbconvert.py fstodb.conf

чтобы использовать версию, с которой работает Plone.

Ошибка, которую я получаю:

Traceback (most recent call last):
  File "zodbconvert.py", line 22, in <module>
    from persistent.TimeStamp import TimeStamp
ImportError: No module named persistent.TimeStamp

Версии:

  • Plone 4.0.5 (python 2.6)
  • Postgresql 9.0.3
  • FreeBSD 8.1
  • python26-2.6.6_1
  • python27-2.7.1_1

PS по умолчанию "python --version" - 2.7.1

Спасибо. Николай Г..

  • 0
    И вы можете импортировать это?
  • 0
    извините, я новичок здесь - конечно. Благодарю. николай
Теги:
plone
relstorage

3 ответа

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

Если вы используете buildout (я надеюсь, что вы), самый простой способ получить все зависимости zodbconvert, правильно включенные в путь python, - это buildout создать script для вас:

[buildout]
...
parts =
     ...
     zodbconvert

[zodbconvert]
recipe = zc.recipe.egg
eggs = ${buildout:eggs}
scripts = zodbconvert

Затем Buildout создаст новый bin/zodbconvert script для вас, который включает в себя все яйца сборки в sys.path.

В качестве альтернативы вы можете создать общий бегун python script, который включает в себя все яйца в вашем buildout и может запускать произвольные скрипты; вы можете использовать это вместо интерпретатора python без костей для запуска произвольных скриптов python со всеми яйцами сборки в sys.path:

[buildout]
...
parts =
    ...
    zopepy

[zopepy]
recipe = zc.recipe.egg
eggs = ${buildout:eggs}
interpreter = zopepy
scripts = zopepy

bin/zopepy script может затем использоваться для запуска произвольных скриптов python со всеми вашими яйцами сборки уже в sys.path, поэтому bin/zopepy zodbconvert.py fstodb.conf должен работать.

Обратите внимание, что единый установщик Plone уже поставляется с включенной частью zopepy, и мой выбор partname для этого script был намеренно с использованием того же имени.

Если вы не используете buildout (и с Plone 4, это не очень хорошая идея в целом), вы также можете перечислить необходимые пакеты (ZODB3, zope.interface, RelStorage, psycopg2) в PYTHONPATH переменная среды.

0

Вы не включили пакет ZODB с установкой Python. Либо настройте PYTHONPATH, чтобы включить пакет ZODB, либо просто easy_install ZODB - в зависимости от того, что вы пытаетесь сделать.

  • 0
    Ему понадобится больше, чем ZODB; он будет не хватать на psycopg2 , RelStorage и zope.interface . Лучше просто пойти с bin / zopepy или выделенной частью buildout, не так ли? :-)
  • 0
    Спасибо Страж, я попробую. Извините за "принять вещь" - я просто дал вам точку. Вернусь к проблеме - немного подчеркнуто на данный момент. Благодарю.
0

быстрое решение..

locate persistent
export PYTHONPATH=$PYTHONPATH:/path/to/your/python_persistent_dir
  • 0
    Он должен включать в себя ZODB , zope.interface , RelStorage и psycopg2 пакеты.
  • 0
    Спасибо, Дамир, ты попал в точку. Я попробую это.

Ещё вопросы

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