python路径问题:调用zodbconvert时的ImportError(FreeBSD 8.1)

时间:2011-04-24 09:38:27

标签: python plone relstorage

我猜这是一个python路径问题(在FreeBSD 8.1上)。

我试图使用zodbconvert将Data.fs转换为Postgresql。我已经下载了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

感谢。 Nikolaj G。

3 个答案:

答案 0 :(得分:5)

如果你正在使用buildout(我希望你是),让python路径中正确包含所有zodbconvert依赖项的最简单方法是让buildout创建脚本你:

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

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

Buildout将为您创建一个新的bin/zodbconvert脚本,其中包含sys.path中的所有buildout鸡蛋。

或者,您可以创建一个通用的python脚本运行器,其中包含buildout中的所有egg,并且可以运行任意脚本;您可以使用它来代替bare-bones python解释器来运行sys.path中所有buildout egg的任意python脚本:

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

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

然后可以使用bin/zopepy脚本运行任意python脚本,其中所有的buildout egg已经在sys.path中,因此bin/zopepy zodbconvert.py fstodb.conf应该有效。

请注意,Plone统一安装程序已附带zopepy部分,我选择的此脚本的部分名称是故意使用相同的名称。

如果您没有使用buildout(以及Plone 4,这不是一个好主意),您还可以在{{{{ {1}}环境变量。

答案 1 :(得分:0)

快速解决..

locate persistent
export PYTHONPATH=$PYTHONPATH:/path/to/your/python_persistent_dir

答案 2 :(得分:0)

您没有在Python安装中包含 ZODB 包。调整PYTHONPATH以包含 ZODB 包或仅easy_install ZODB - 取决于您要执行的操作。