#python #plone #relstorage
#python #plone #повторное хранение
Вопрос:
Я предполагаю, что это проблема с python path (во FreeBSD 8.1).
Я пытаюсь преобразовать файл Data.fs в Postgresql с помощью zodbconvert. Я загрузил 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
Спасибо. Николай Г.
Комментарии:
1. И можете вы это импортировать?
2. извините, я новичок здесь — конечно. Спасибо. николай
Ответ №1:
Если вы используете buildout
(я очень надеюсь, что используете), самый простой способ правильно включить все zodbconvert
зависимости в путь python — это buildout
создать скрипт для вас:
[buildout]
...
parts =
...
zodbconvert
[zodbconvert]
recipe = zc.recipe.egg
eggs = ${buildout:eggs}
scripts = zodbconvert
Затем Buildout создаст для вас новый bin/zodbconvert
скрипт, который включает в себя все яйца сборки sys.path
.
В качестве альтернативы, вы можете создать универсальный запускатель скриптов на python, который включает в себя все яйца в вашей сборке и может запускать произвольные скрипты; вы можете использовать это вместо простого интерпретатора python для запуска произвольных скриптов на python со всеми яйцами сборки в sys.path
:
[buildout]
...
parts =
...
zopepy
[zopepy]
recipe = zc.recipe.egg
eggs = ${buildout:eggs}
interpreter = zopepy
scripts = zopepy
Затем bin/zopepy
скрипт можно использовать для запуска произвольных скриптов на python со всеми вашими сборными яйцами, которые уже есть sys.path
, так что bin/zopepy zodbconvert.py fstodb.conf
это должно сработать.
Обратите внимание, что унифицированный установщик Plone уже поставляется с включенной zopepy
частью, и мой выбор имени партнера для этого скрипта был преднамеренным использованием того же имени.
Если вы не используете buildout
(а с Plone 4 это в целом не очень хорошая идея), вы также можете перечислить требуемые пакеты (ZODB3, zope.interface, RelStorage, psycopg2) в вашей PYTHONPATH
переменной окружения.
Ответ №2:
быстрое исправление..
locate persistent
export PYTHONPATH=$PYTHONPATH:/path/to/your/python_persistent_dir
Комментарии:
1. Ему также нужно будет включить пакеты
ZODB
,zope.interface
RelStorage
иpsycopg2
.
Ответ №3:
Вы не включили пакет ZODB в вашу установку Python. Либо настройте PYTHONPATH так, чтобы он включал пакет ZODB, либо просто easy_install ZODB
— в зависимости от того, что вы пытаетесь сделать.
Комментарии:
1. Ему понадобится больше, чем ZODB; он пропустит
psycopg2
,RelStorage
иzope.interface
. Лучше просто использовать bin / zopepy или выделенную часть сборки, не так ли? 🙂2. Спасибо Sentinel, я попробую это. Извините за «принять» — я только что указал вам на это. Я вернусь к проблеме — в данный момент немного напряженный. Спасибо.