python - 导入错误: No module named couchbase. _libcouchbase

标签 python ubuntu-12.04 couchbase python-cffi

这只发生在 Travis 中 pypy 构建下的我身上。 这是确切的错误字符串:

Traceback (most recent call last):
  File "app_main.py", line 75, in run_toplevel
  File "app_main.py", line 581, in run_it
  File "<string>", line 1, in <module>
  File "tests/test_pycouchbase.py", line 15, in <module>
    from pycouchbase.utils import *
  File "pycouchbase/__init__.py", line 8, in <module>
    from .connection import Connection
  File "pycouchbase/connection.py", line 3, in <module>
    from couchbase.bucket import Bucket
  File "/home/travis/virtualenv/pypy-2.5.0/site-packages/couchbase/__init__.py", line 28, in <module>
    from couchbase.user_constants import *
  File "/home/travis/virtualenv/pypy-2.5.0/site-packages/couchbase/user_constants.py", line 21, in <module>
    import couchbase._bootstrap
  File "/home/travis/virtualenv/pypy-2.5.0/site-packages/couchbase/_bootstrap.py", line 34, in <module>
    import couchbase.exceptions as E
  File "/home/travis/virtualenv/pypy-2.5.0/site-packages/couchbase/exceptions.py", line 18, in <module>
    import couchbase._libcouchbase as C
ImportError: No module named couchbase._libcouchbase

我已经在尝试安装 couchbase_cffi,但看起来 _libcouchbase.so 文件仍然丢失。

构建链接:https://travis-ci.org/ardydedase/pycouchbase/jobs/75973023#L1782

特拉维斯配置文件:

# Config file for automatic testing at travis-ci.org

language: python

python:
  - "3.4"
  - "3.3"
  - "2.7"
  - "2.6"
  - "pypy"

before_install:
  - sudo rm -rf /etc/apt/sources.list.d/*
  - sudo add-apt-repository -y ppa:pypy/ppa
  - wget -O- http://packages.couchbase.com/ubuntu/couchbase.key | sudo apt-key add -
  - echo deb http://packages.couchbase.com/ubuntu precise precise/main | sudo tee /etc/apt/sources.list.d/couchbase.list
  - sudo apt-get update
  - sudo apt-cache search libcouchbase

install:
  # GCC
  - sudo apt-get install python-software-properties
  - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
  - sudo apt-get update
  - sudo apt-get -y install gcc-4.8
  - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50
  # libcouchbase dependencies
  - sudo apt-get -y install libxml2-dev libxslt-dev python-all-dev libffi6 libffi-dev 
  - sudo apt-get -y install build-essential libssl-dev python-openssl
  - sudo apt-get -y install libcouchbase-dev libcouchbase2-core libcouchbase2-libevent libevent-dev python-gevent
  - pip -q install gevent || echo "Couldn't find gevent"
  - pip -q install twisted
  - pip -q install testresources
  - pip install -r requirements.txt

# command to run tests, e.g. python setup.py test
script: 
  # - cd couchbase-python-cffi
  # - export CFLAGS=-Qunused-arguments
  # - export CPPFLAGS=-Qunused-arguments
  # - python setup.py test  
  # - python setup.py build
  - echo $PWD
  # - if [[ $TRAVIS_PYTHON_VERSION == pypy ]]; then git clone https://github.com/couchbase/couchbase-python-client.git && cd couchbase-python-client && python setup.py build_ext --inplace && cd ..; fi
  - if [[ $TRAVIS_PYTHON_VERSION == pypy ]]; then cd couchbase-python-cffi && python setup.py build  && python setup.py install && cd .. && ls -al; fi  
  - if [[ $TRAVIS_PYTHON_VERSION == pypy ]]; then ls -al /home/travis/virtualenv/pypy-2.5.0/site-packages/couchbase; fi
  - python -c "from tests import test_pycouchbase; print(test_pycouchbase)"  
  - python runtests.py

我确实尝试引用此线程:https://forums.couchbase.com/t/installing-couchbase-1-0-0-on-ubuntu/291 ,但我找不到其中引用的 build 文件夹。

最佳答案

如果使用 cffi 模块,您必须在执行其他操作之前导入 couchbase_ffi。原因是 couchbase_ffi 将自身注入(inject)为 couchbase._libcouchbase 模块。

在“正常”扩展下,couchbase._libcouchbase包含构建的正常CPython扩展代码。由于 CPyext 不能真正在 pypy 下工作,因此在该平台上禁用了代码的构建,并且您需要事先“注入(inject)”ffi 模块。

诚然,这是一个烦人的步骤,而且不是最“透明”的。你也许可以做类似的事情..(未经测试!!!):尝试导入 couchbase;除了导入错误:导入 couchbase_ffi

关于python - 导入错误: No module named couchbase. _libcouchbase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32056557/

相关文章:

python - 如何使用 Python 将 avi 视频表示为一组矩阵?

php - 如何在 ubuntu 上的 LAMP 中启用 mod_rewrite?

eclipse - GWT RPC 的 Google 示例在 Eclipse 中返回 HTTP 错误 405

python - 在双重条件下应用 AND 运算符

python - [] 和 {} 与 list() 和 dict(),哪个更好?

python - Python 中的有界逻辑回归

cordova - Couchbase Lite 本地启动

ubuntu-12.04 - Java编译器错误

java - Couchbase DefaultOrphanResponseReporter 观察到的孤儿 react

android - Progressdialog 卡住使用 couchbase