在PyPy中导入Snap.py

1 投票
2 回答
3175 浏览
提问于 2025-04-19 21:00

我正在使用 Snap.Py 这个库。为了提高我的效率,我尝试使用 PyPy,但我在导入 Snap.Py 包时遇到了问题。

到目前为止,我做了以下几件事:

  1. 使用 pip 安装了 snap

  2. 运行了 pypy setup.py install

我看到 snap.py 文件是从 pypy/site-packages 加载的。但它无法加载 _snap 包。

错误追踪信息(最近的调用在最前面): 文件 "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') 来更新系统路径,但这并没有解决问题。

我漏掉了什么呢?

2 个回答

0

你可能在用的是32位的Python版本,这个版本和Snap不兼容,具体情况可以参考这里: Snapy下载页面

(Windows 32位的包或者Python 32位的版本都不行)。你可以从Python下载页面下载Python 2.7.x。 确保你使用的是64位的Python 2.7.x包

要解决这个问题,试着从这里安装64位版本: 下载Python 2.7 64位的链接

类似的问题可以在这个链接找到: 这里

0

一个名为 _snap.so 的文件不能通过运行 pypy 来创建;它一定是通过运行 CPython 错误地创建的。如果是用 pypy 创建的,它的名字应该像 _snap.pypy-23.so 这样。你需要在 snap 包的源代码中运行 pypy setup.py install 这条命令。如果它没有正确创建和安装 _snap.pypy-23.so,你需要仔细检查它输出的内容以及原因...

正如 IfLoop 提到的,这样做是在 PyPy 上运行一个 CPython 的 C 扩展模块,这“通常”是可以的(但并不总是),不过速度比在 CPython 上慢。如果你在 CPython 上遇到性能问题,而大部分时间都花在这个 C 扩展模块上,那么切换到 PyPy 并不会有帮助。只有当这个 _snap 模块并不是性能关键部分时,切换才会有用。

撰写回答