2014-09-04 79 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