2014-09-04 73 views
1

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

这是我迄今所做的:

  1. 使用PIP安装卡扣

  2. pypy的setup.py安装

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

回溯(最近通话最后一个):文件 “app_main.py” 75行,在 run_toplevel文件 “main.py”,4号线,在 进口捕捉文件“/usr/.../文件/ 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 

我可以看到该文件_ snap.so在lib-python下,但对于某些原因,它不是由pypy加载

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

我错过了什么?

+0

你可能不会得到你的,如果你使用的不是CPython的PyPy希望的性能已经使用交流扩展。请参阅http://pypy.readthedocs.org/en/latest/faq.html#do-cpython-extension-modules-work-with-pypy – SingleNegationElimination 2014-09-04 17:24:50

回答

0

无法通过运行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模块不是性能关键的部分,它只会有所帮助。

0

您可能正在使用Python的32位版本,因为它引用在这里不带卡的工作: 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

+1

更详细的答案对这篇旧文章很有帮助。 – Ian 2016-04-25 09:42:38