【问题标题】:ImportError: cannot import name escape when lauching pyramidImportError:启动金字塔时无法导入名称转义
【发布时间】:2014-03-23 10:13:27
【问题描述】:

当我尝试启动一个使用金字塔制作的应用程序时,我收到了错误

    from pyramid.compat import configparser
File "/srv/lightbase/lib/python3.3/site-packages/pyramid-1.5b1-py3.3.egg/pyramid/compat.py", line 205, in <module>
    from html import escape
ImportError: cannot import name escape

当尝试 pip install html 时,我收到错误:

ImportError: No module named 'html.entities'; html is not a package

我正在使用一个带有 python3.3.4 的 virtualenv,它是从使用“--enable-shared”的代码编译而来的,用于 mod_wsgi。

【问题讨论】:

  • 所以这是一个金字塔错误?
  • 不太可能。你能在相同的环境中运行from html import escape,但没有pyramid吗?您的sys.path 中是否有一个不是来自stdlib 的顶级html 模块? print(html.__file__).
  • 我刚查了一下,在 Pyramid 中导入没有问题。
  • 你有一个名为html.py的文件在你的项目运行时使用的路径中有一个名为html的目录,屏蔽了stdlib包。重命名或删除它。

标签: python-3.x pip mod-wsgi pyramid


【解决方案1】:

我使用的 python 版本是从最新的代码版本编译的,我使用的是从 debian 6 默认存储库预编译的 mod_wsgi,删除它并使用最新版本编译我自己的 mod_wsgi 足以解决问题。我认为这意味着它们不兼容。

由于pip install html/easy_install html 不起作用,将/usr/local/python3.3/html 符号链接到 virtualenv 站点包文件夹使解释器将其作为一个包读取。 这可能不是最好的解决方案,但在更好的选择出现之前,我会将其作为正确答案。

【讨论】:

  • html 是标准库的一部分。如果将其链接到 site-packages 文件夹有帮助,那么您所做的就是让它出现在您的 sys.path 搜索顺序中的其他位置,然后再找到破坏您代码的其他版本。
  • @MartijnPieters 你是对的,问题是我的 mod_wsgi 版本没有寻找标准库,我猜它们在较旧的 python3 版本中的存储方式发生了变化
猜你喜欢
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 2018-11-08
  • 2016-03-31
  • 2014-10-10
  • 2014-09-20
相关资源
最近更新 更多