【问题标题】:Plone/Paster - What could cause "paster addcontent dexterity_content" to not work?Plone/Paster - 什么可能导致“paster addcontent dexterity_content”不起作用?
【发布时间】:2015-09-15 19:36:21
【问题描述】:

我正在尝试使用 paster 创建一个灵巧的内容类型。 我在与我之前使用的文件夹不同的目标文件夹中进行了 Plone 4.3.4 的新独立安装,因此 buildout-cache 将是干净的。

我使用的操作系统是 Ubuntu 14.04。所以在我的下载文件夹中,在我提取的安装程序文件夹中,我输入终端:

./install.sh --target=/home/myusername/Plone2 --instance=MyProject standalone

安装正确。然后我去 Plone2 中的 MyProject。我编辑构建以更改我的密码,然后运行构建:

buildout -c develop.cfg

然后我进入 src 文件夹并使用 zopeskel 创建一个新产品:

../bin/zopeskel dexterity project.house

然后我编辑我的 buildout,在 egg 下添加 project.house,在 development 下添加 src/project.house。然后我再次运行 buildout 并正确构建。然后在sources下的project.house文件夹中,我尝试运行paster。

../../bin/paster addcontent dexterity_content

然后我得到一个错误:

Traceback (most recent call last):
  File "../../bin/paster", line 264, in <module>
    sys.exit(paste.script.command.run())
  File "/home/pjdowney/Plone2/buildout-cache/eggs/PasteScript-1.7.5-py2.7.egg/paste/script/command.py", line 104, in run
    invoke(command, command_name, options, args[1:])
  File "/home/pjdowney/Plone2/buildout-cache/eggs/PasteScript-1.7.5-py2.7.egg/paste/script/command.py", line 143, in invoke
    exit_code = runner.run(args)
  File "/home/pjdowney/Plone2/buildout-cache/eggs/PasteScript-1.7.5-py2.7.egg/paste/script/command.py", line 238, in run
    result = self.command()
  File "/home/pjdowney/Plone2/buildout-cache/eggs/ZopeSkel-2.21.2-py2.7.egg/zopeskel/localcommands/__init__.py", line 70, in command
    self._extend_templates(templates, args[0])
  File "/home/pjdowney/Plone2/buildout-cache/eggs/ZopeSkel-2.21.2-py2.7.egg/zopeskel/localcommands/__init__.py", line 204, in _extend_templates
    tmpl = entry.load()(entry.name)
  File "/home/pjdowney/Plone2/buildout-cache/eggs/setuptools-7.0-py2.7.egg/pkg_resources.py", line 2184, in load
    ['__name__'])
ImportError: No module named dexterity.localcommands.dexterity

我最近确实在另一个目标文件夹中安装了 Plone 4.3.6。不幸的是,我从未尝试过使用 Paster,因为我正在通过网络创建灵巧的内容。切换到 4.3.6 会毁了一切吗?

我之前的目标文件夹仍然有效。

【问题讨论】:

  • 你的问题是,如果“切换到 Plone-4.3.6 可能会毁掉一切”,这是否对我提出了要求,如果它适用于较低的 UnifiedInstallers 版本?我要尝试的另一件事是将 setuptools 降级到您拥有的下一个较低版本,原因在下面我的回答中给出。

标签: plone paster zopeskel


【解决方案1】:

将 ""ImportError: No module named dexterity.localcommands.dexterity" + "plone" 扔进搜索引擎会直接导致Plone 4.3.4 - ImportError: No module named dexterity.localcommands.dexterity,其中 S. McMahon 表示这是https://github.com/plone/Installers-UnifiedInstaller/issues/33 中报告的错误,并且已经为 Plone-5 修复-安装程序,但不适用于 Plone-4。

这个bug可能是最新的setuptools-version和FWIW引起的,我有一天无意中在“glyph”的推文中发现了这些信息,看起来很有帮助:

“公共服务公告:让@dstufft 的生活更轻松,不要 使用 Debian 或 Ubuntu 的“python-pip”包。它坏了。” (1)

"相反,使用 get-pip.py 安装 pip 和 virtualenv,理想情况下是 你的主目录。 (可悲的是,https://pip2014.com/ 仍然 相关的。)”(2)

当我再次遇到问题时,我会仔细看看救星-promising-script get-pip.py,但现在,我根本不升级任何东西:-D

(1)https://twitter.com/glyph/status/640980540691234816 (2)https://twitter.com/glyph/status/640980540691234816

【讨论】:

  • 感谢您的解释性回答。我很感激。所以这是 setuptools 的问题。我在 buildout.cfg 的版本下将 setuptools 的版本固定为 2.2,它可以工作。我应该首先根据回溯中的倒数第二行进行尝试。是的,我会尝试暂时推迟升级,因为我还在做一个项目。再次感谢您!
【解决方案2】:

(复制自我自己对 github 中类似问题的评论)

我过去曾与 zopeskel / Paster 发生过这样的战斗。现在虽然我避免它....选择使用:

  • mrbob 用于模板鸡蛋
  • 通过网络创建灵巧类型see plone training
  • 或者直接在代码中创建灵巧类型没有模板 - 灵巧cf原型中的样板代码要少得多

我怀疑您的问题是因为您安装的 4.3.6 可能已升级 zopeskel 或其依赖项之一,对本地命令/模板有不同的要求。如果你想继续这场斗争(我不推荐),那么你可以尝试将所有 zopeskel 依赖项固定到最新版本(尽管我相信 Zopeskel 必须低于 3.0)

【讨论】:

  • 谢谢。现在我将 setuptools 设置为 2.2,这解决了我遇到的问题。我会在某个时候改用 mrbob,因为我可能会通过固定其他产品的版本而导致其他问题。另外,根据您提供的 mrbob 上的链接,mrbob 正在弃用 paste。再次感谢您。
  • 这是个好主意,paster/zopeskel 的支持会越来越少——我想说的是,当你开始一个新项目时(就像现在一样),你应该切换到 mrbob。它令人耳目一新,模板比粘贴模板更准确。给自己 10-15 分钟的时间来尝试一下,看看你的想法!
  • mrbob 是否可以避免像我们经常遇到的 paster'n'zopskel 那样的冲突?
  • @IdaEbkes 我猜这不是万无一失的,但它的依赖程度远低于 paster mrbob.readthedocs.org/en/latest/other.html
  • @Danimal: 嗯,看看它的 setup.py,它实际上比 paster 有更多的依赖关系,但重要的可能是模块获得了多少连续
猜你喜欢
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多