簡體   English   中英

pip安裝成功編譯后執行導入錯誤

[英]Execution import error after success pip install compilation

我的麻煩

在干凈的Ubuntu 16.04環境上,我想安裝和使用Crossbar.io。

我已經從ppa,virtualenv安裝了pypy並激活了一個新的pypy virtualenv。

通過命令pip install crossbar安裝crossbar時出現一些錯誤,但使用以下build命令解決了:

pip install --no-cache-dir --global-option=build_ext --global-option="-I/usr/include/python2.7" crossbar

現在,當使用crossbar version啟動crossbar時,出現以下錯誤:

Traceback (most recent call last):
  File "/home/visiboost/gmm_pypy_env2/bin/crossbar", line 11, in <module>
    load_entry_point('crossbar==17.6.1.post3', 'console_scripts', 'crossbar')()
  File "/home/visiboost/gmm_pypy_env2/site-packages/pkg_resources/__init__.py", line 542, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/home/visiboost/gmm_pypy_env2/site-packages/pkg_resources/__init__.py", line 2569, in load_entry_point
    return ep.load()
  File "/home/visiboost/gmm_pypy_env2/site-packages/pkg_resources/__init__.py", line 2229, in load
    return self.resolve()
  File "/home/visiboost/gmm_pypy_env2/site-packages/pkg_resources/__init__.py", line 2235, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/home/visiboost/gmm_pypy_env2/site-packages/crossbar/controller/cli.py", line 62, in <module>
    from crossbar.controller.node import _read_release_pubkey, _read_node_pubkey
  File "/home/visiboost/gmm_pypy_env2/site-packages/crossbar/controller/node.py", line 44, in <module>
    from nacl.signing import SigningKey
  File "/home/visiboost/gmm_pypy_env2/site-packages/nacl/signing.py", line 19, in <module>
    import nacl.bindings
  File "/home/visiboost/gmm_pypy_env2/site-packages/nacl/bindings/__init__.py", line 17, in <module>
    from nacl.bindings.crypto_box import (
  File "/home/visiboost/gmm_pypy_env2/site-packages/nacl/bindings/crypto_box.py", line 18, in <module>
    from nacl._sodium import ffi, lib
ImportError: unable to load extension module '/home/visiboost/gmm_pypy_env2/site-packages/nacl/_sodium.pypy-41-x86_64-linux-gnu.so': /home/visiboost/gmm_pypy_env2/site-packages/nacl/_sodium.pypy-41-x86_64-linux-gnu.so: undefined symbol: _Py_NoneStruct

我嘗試在啟動前通過設置環境變量添加路徑,但沒有成功:

export LD_LIBRARY_PATH=/usr/lib/python2.7/config-x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/

我的環境

  • Ubuntu 16.04 / 4.4.0-87-通用
  • Python 2.7.13(5.8.0 + dfsg-2〜ppa2〜ubuntu16.04,2017年6月17日,18:50:19)
  • [PyPy 5.8.0和GCC 5.4.0 20160609]
  • 來自/ home / visiboost / gmm_pypy_env2 / site-packages(python 2.7)的pip 9.0.1

庫失敗的ldd結果:

ldd -r /home/visiboost/gmm_pypy_env2/site-packages/nacl/_sodium.pypy-41-x86_64-linux-gnu.so
    linux-vdso.so.1 =>  (0x00007fff31ddd000)
    libsodium.so.18 => /usr/lib/x86_64-linux-gnu/libsodium.so.18 (0x00007fe336153000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe335f0c000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe335b41000)
    /lib64/ld-linux-x86-64.so.2 (0x0000564659a68000)
undefined symbol: _Py_NoneStruct    (/home/visiboost/gmm_pypy_env2/site-packages/nacl/_sodium.pypy-41-x86_64-linux-gnu.so)
undefined symbol: PyObject_CallMethod   (/home/visiboost/gmm_pypy_env2/site-packages/nacl/_sodium.pypy-41-x86_64-linux-gnu.so)
undefined symbol: PyEval_RestoreThread  (/home/visiboost/gmm_pypy_env2/site-packages/nacl/_sodium.pypy-41-x86_64-linux-gnu.so)
undefined symbol: PyLong_FromVoidPtr    (/home/visiboost/gmm_pypy_env2/site-packages/nacl/_sodium.pypy-41-x86_64-linux-gnu.so)
undefined symbol: PyArg_UnpackTuple (/home/visiboost/gmm_pypy_env2/site-packages/nacl/_sodium.pypy-41-x86_64-linux-gnu.so)
undefined symbol: PyErr_Occurred    (/home/visiboost/gmm_pypy_env2/site-packages/nacl/_sodium.pypy-41-x86_64-linux-gnu.so)
undefined symbol: PyImport_ImportModule (/home/visiboost/gmm_pypy_env2/site-packages/nacl/_sodium.pypy-41-x86_64-linux-gnu.so)
undefined symbol: PyLong_FromUnsignedLong   (/home/visiboost/gmm_pypy_env2/site-packages/nacl/_sodium.pypy-41-x86_64-linux-gnu.so)
undefined symbol: PyInt_FromLong    (/home/visiboost/gmm_pypy_env2/site-packages/nacl/_sodium.pypy-41-x86_64-linux-gnu.so)
undefined symbol: PyEval_SaveThread (/home/visiboost/gmm_pypy_env2/site-packages/nacl/_sodium.pypy-41-x86_64-linux-gnu.so)

你有什么想法嗎?

您不應該在pypy中使用cpython標頭,因此--global-option="-I/usr/include/python2.7"是錯誤的。 如此此處所述,您可能需要安裝pypy-dev軟件包,以便可以使用pypy構建軟件包,就像使用python-dev來構建python軟件包一樣。

編輯:查看crossbar 文檔 ,他們根本不建議使用apt get ,也建議從源代碼編譯CPython,這就是為什么沒有提到python-dev包的原因。

使用@mattip響應解決:通過apt-get install pypy-dev安裝pypy-dev軟件包,然后再次運行pip install以使用良好的庫重建模塊pip install --no-cache-dir crossbar

現在對我來說很好!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM