在PyPy中导入Snap.py

时间:2014-09-04 17:15:40

标签: python pypy

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

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

  1. 使用pip install snap

  2. pypy setup.py install

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

      

    回溯(最近一次调用最后一次):文件“app_main.py”,第75行,中   run_toplevel文件“main.py”,第4行,in       import snap文件“/usr/.../Documents/pypy/pypy/site-packages/snap.py”,第32行,in          _snap = swig_import_helper()
      文件“/usr/../Documents/pypy/pypy/site-packages/snap.py”,第24行,in   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路径 但它没有帮助。

    我错过了什么?

2 个答案:

答案 0 :(得分:0)

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

正如IfLoop所提到的,这将在PyPy上运行CPython C扩展模块,通常"#34;工作(并不总是),但比CPython慢​​。如果你在CPython上遇到性能问题,并且无论如何大部分时间花在这个C扩展模块上,切换到PyPy根本没有帮助。只有这个_snap模块完全不是性能关键部分才有用。

答案 1 :(得分:0)

You are probably using python 32 bit version which does not work with snap as it quoted here : Snapy Download page

(Windows 32-bit packages or Python 32-bit will not work). Python 2.7.x can be downloaded from the Python Download page. Make sure that you are using 64-bit Python 2.7.x packages.

To solve the issue, try installing a 64 bit version from here: Link to download python 2.7 64bit

somehow similar problem is asked in this link