1

我猜这是一个 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

版本:

  • 克隆 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

谢谢。尼古拉·G。

4

3 回答 3

5

如果您正在使用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,这总体上不是一个好主意),您还可以在PYTHONPATH环境变量中列出所需的包(ZODB3、zope.interface、RelStorage、psycopg2)。

于 2011-04-24T11:05:11.893 回答
0

快速解决..

locate persistent
export PYTHONPATH=$PYTHONPATH:/path/to/your/python_persistent_dir
于 2011-04-24T09:54:29.010 回答
0

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

于 2011-04-24T09:57:00.573 回答