use*_*857 1 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
Run Code Online (Sandbox Code Playgroud)
,使用Plone运行的版本.
我得到的错误:
Traceback (most recent call last):
File "zodbconvert.py", line 22, in <module>
from persistent.TimeStamp import TimeStamp
ImportError: No module named persistent.TimeStamp
Run Code Online (Sandbox Code Playgroud)
版本:
PS默认情况下"python --version"是2.7.1
谢谢.尼古拉吉
如果你正在使用buildout(我希望你是),让zodbconvertpython路径中正确包含所有依赖项的最简单方法是buildout为你创建脚本:
[buildout]
...
parts =
...
zodbconvert
[zodbconvert]
recipe = zc.recipe.egg
eggs = ${buildout:eggs}
scripts = zodbconvert
Run Code Online (Sandbox Code Playgroud)
Buildout然后将为您创建一个新bin/zodbconvert脚本,其中包含所有buildout egg sys.path.
或者,您可以创建一个通用的python脚本运行器,其中包含buildout中的所有egg,并且可以运行任意脚本; 你可以使用它来代替bare-bones python解释器来运行任意python脚本以及所有的buildout egg sys.path:
[buildout]
...
parts =
...
zopepy
[zopepy]
recipe = zc.recipe.egg
eggs = ${buildout:eggs}
interpreter = zopepy
scripts = zopepy
Run Code Online (Sandbox Code Playgroud)
bin/zopepy然后可以使用该脚本运行任意python脚本,并且所有的buildout egg已经存在sys.path,所以bin/zopepy zodbconvert.py fstodb.conf应该可以工作.
请注意,Plone统一安装程序已经附带了zopepy部件,我选择的此脚本的部件名是故意使用相同的名称.
如果您没有使用buildout(并且使用Plone 4,这在整体上并不是一个好主意),您还可以在PYTHONPATH环境变量中列出所需的包(ZODB3,zope.interface,RelStorage,psycopg2).