【问题标题】:Last Python version miss updated libraries, how to deal with this?上一个 Python 版本错过了更新的库,如何处理?
【发布时间】:2017-05-12 22:12:07
【问题描述】:

昨天我将 PC 上的 Python 从 3.5.1 更新到了最新版本:3.6。 我在笔记本上做了同样的事情,从 3.5.2 到 3.6。 不时更新 Python 是很自然的。

我想使用 Couchbase。 最新的 Python SDK 适用于 3.4 版本!
(couchbase-2.1.3.win-amd64-py3.4.exe)

此外,该库可能存在错误,因为“pip install couchbase”返回此错误(在 2 台不同的机器上)。

    building 'couchbase._libcouchbase' extension
    creating build\temp.win32-3.6
    creating build\temp.win32-3.6\Release
    creating build\temp.win32-3.6\Release\src
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -D_CRT_SECURE_NO_WARNINGS=1
-I..\lcb-winbuild\x86\deps\include "-Ic:\program files (x86)\python36-32\include" "-Ic:\program files (x86)\python36-32\include" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\winrt" /Tcsrc\exceptions.c /Fobuild\temp.win32-3.6\Release\src\exceptions.obj
    exceptions.c
    c:\users\alex\appdata\local\temp\pip-build-h_bixmeo\couchbase\src\pycbc.h(25): fatal error C1083: Cannot open include file: 'libcouchbase/couchbase.h': No such file or directory
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\cl.exe' failed with exit status 2

    ---------------------------------------- Command ""c:\program files (x86)\python36-32\python.exe" -u -c "import setuptools, tokenize;__file__='C:\\Users\\alex\\AppData\\Local\\Temp\\pip-build-h_bixmeo\\couchbase\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install
--record C:\Users\alex\AppData\Local\Temp\pip-tkag3cnx-record\install-record.txt
--single-version-externally-managed --compile" failed with error code 1 in C:\Users\alex\AppData\Local\Temp\pip-build-h_bixmeo\couchbase\

... GitHub 上的 Python SDK (https://github.com/couchbase/couchbase-python-client) 被标记为 [build|failing]。

这不是我第一次拥有太新的 Python 版本,但还没有更新版本的库 X。

你是如何处理这个问题的?
这个“一般”问题有解决方法吗?

我的意思是一种在具有 Python 3.5/3.6 的系统上安装 Python 3.4 库“X”的方法。

亚历山德罗

[更新]
上一个错误(缺少“libcouchbase/couchbase.h”)是由于缺少 Couchbase C SDK。 Python SDK 依赖于 C SDK。 此外,Python SDK 无法通过 pip 安装:

请注意,通过 pip 安装将无法在 Windows 上运行。

而是在 PyPi 页面和 GitHub 上没有提到任何问题,并且都建议使用:
pip install git+git://github.com/couchbase/couchbase-python-client

C SDK 也不能通过 Windows 上的 pip 安装。 :-( 文档说您可以为您的环境下载二进制版本并

C SDK 没有任何首选的安装路径,并且已启动 让您确定 libcouchbase.dll 的放置位置。

1) Win x64 上 Visual Studio 2015 的最新版本 (2.7.0) 的链接已损坏。我必须使用旧版本或 Visual Studio 2012 版本。 2) 我不知道在哪里解压这个 SDK。对此根本没有任何说明。我没有在 Google 上找到任何关于在 Windows 上安装 Python DSDK 的帖子/示例)。

pip install 在 C:\users(current user)\AppData\Local\Temp(pip-khfdskhfsdk-build) 下创建一个新的临时文件夹,所以我不知道如何指示 libcouchbase.h 文件在哪里(或 C SDK 的路径)。

我尝试使用以下来源构建 SDK:

python setup.py build_ext --inplace 
    --library-dir d:\Downloads\libcouchbase-2.7.0_amd64_vc11\libcouchbase-2.7.0_amd64_vc11\lib  
    --include-dir d:\Downloads\libcouchbase-2.7.0_amd64_vc11\libcouchbase-2.7.0_amd64_vc11\include

但我有 54 个这样的错误: exceptions.obj:错误 LNK2001:未解析的外部符号 _imp__lcb_get_errtype (与 VS 2015 的 libcouchbase 2.6.4 版本相同的错误)

此时我最好的选择是尝试为 Python 3.4 使用 Windows 安装程序(应该包括 C SDK 本身),但安装程序会检查 Python 3.4 版本。
如何强制Python 3.4 的安装程序可以在我的 Python 3.6 上运行吗?

【问题讨论】:

  • 大部分适用于python3.4的代码应该也适用于python3.5。自从您上次为 python3.4 安装它以来,couchbase-python-client 中可能引入了一个错误。这也可以解释您看到的“[build|failing]”。如果可能的话,您应该查看您在 python3.4 中使用的 couchbase 客户端的版本,然后尝试使用 pip... (pip install couchbase==<version>) 专门安装该版本
  • MongoDB 也只有适用于 Python 3.4 的驱动程序,但 pip install pymongo(在 Python 3.6 上)工作正常。可能那个版本的 Couchabse Python SDK 真的不行。

标签: python couchbase


【解决方案1】:

我建议您使用要使用的正确 Python 版本创建一个 virtualenv。即使您的系统上安装了多个版本,这也可以让您拥有一个使用旧版本 Python 的项目。我相信您可以使用 -p 标志创建 virtualenv 来指定您要使用的 Python 版本。一旦你在那个 virtualenv 中,你可以pip install 你的依赖没有问题。

virtualenvwrapper 是让 virtualenv 对你更有用的东西,所以如果你有时间也可以检查一下(虽然我不知道它是否适用于 Windows。)

【讨论】:

  • 有没有可能避免这个麻烦?我不介意 virtualenv,但我不想将我的整个项目 2 版本移回(这有不兼容的风险)只是为了能够连接到 Python Couchbase……还有其他方法吗?
  • 你可以编写一个单独的 python 3.4 程序,你可以使用它来进行你的 couchbase 查询。不过,如果我处于你的位置,我要么将客户端移植到 3.6,要么停止在我的项目中使用 couchbase 或 python 之一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-29
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2021-09-03
相关资源
最近更新 更多