【问题标题】:Import Snap.py in PyPy在 PyPy 中导入 Snap.py
【发布时间】:2014-09-04 17:15:39
【问题描述】:

我正在与Snap.Py 合作。 我试图通过使用 PyPy 来提高效率,但是我无法导入 Snap.Py 包。

这是我到目前为止所做的:

  1. 使用 pip install snap

  2. pypy setup.py install

我看到文件 snap.py 是从 pypy/site-packages 加载的。 但加载_sanp包失败。

Traceback(最近一次调用最后一次):文件“app_main.py”,第 75 行,在 run_toplevel 文件“main.py”,第 4 行,在 导入 snap 文件“/usr/.../Documents/pypy/pypy/site-packages/snap.py”,第 32 行,在 _snap = swig_import_helper()
文件“/usr/../Documents/pypy/pypy/site-packages/snap.py”,第 24 行,在 swig_import_helper

import _snap ImportError: No module named _snap

在lib-python下我可以看到文件_snap.so,但是由于某种原因它没有被pypy加载

从 snap.py 代码中我可以看到导入是通过 imp.find_module 完成的。 我尝试使用 sys.path.insert(0,'/usr/.../pypy/pypy/lib-python') 更新 sys 路径 但它没有帮助。

我错过了什么?

【问题讨论】:

标签: python pypy


【解决方案1】:

运行pypy无法创建名为_snap.so的文件;它一定是通过运行 CPython 错误地创建的。如果它是用 pypy 创建的,它会被称为 _snap.pypy-23.so。在 snap 包的源代码中运行的 pypy setup.py install 行是您所需要的。如果它没有正确创建和安装_snap.pypy-23.so,您需要仔细检查它输出的内容以及原因...

正如 IfLoop 所提到的,这将在 PyPy 上运行 CPython C 扩展模块,该模块“经常”工作(并非总是)但比在 CPython 上慢。如果您在 CPython 上遇到性能问题,并且无论如何大部分时间都花在这个 C 扩展模块上,那么切换到 PyPy 将毫无帮助。只有当这个 _snap 模块根本不是性能关键部分时才会有帮助。

【讨论】:

    【解决方案2】:

    您可能使用的 python 32 位版本不能与 snap 一起使用,因为它在此处引用: Snapy Download page

    (Windows 32 位软件包或 Python 32 位将不起作用)。 Python 2.7.x 可以从 Python 下载页面下载。 确保您使用的是 64 位 Python 2.7.x 包

    要解决此问题,请尝试从此处安装 64 位版本: Link to download python 2.7 64bit

    类似的问题is asked in this link

    【讨论】:

    • 对这个旧帖子的更多详细说明将是有益的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多