Проблема с путями в python: ImportError при вызове zodbconvert (FreeBSD 8.1)
Я предполагаю, что это проблема с путями Python (на 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
Благодарю. Николай Григорьевич
3 ответа
Если вы используете 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
переменная окружения.
Быстрая починка..
locate persistent
export PYTHONPATH=$PYTHONPATH:/path/to/your/python_persistent_dir
Вы не включили пакет ZODB в вашу установку Python. Либо настройте PYTHONPATH, чтобы включить пакет ZODB, либо просто easy_install ZODB
- в зависимости от того, что вы пытаетесь сделать.