【问题标题】:Install thrift_sasl for Python in Windows在 Windows 中为 Python 安装 thrift_sasl
【发布时间】:2016-09-23 22:28:50
【问题描述】:

我一直在尝试在 Windows 10 x64 中通过 pip 安装 thrift_sasl 软件包。

thrift_sasl 依赖于 sasl 包,但在运行 pip install thrift_saslpip install sasl 时,我遇到了同样的错误。

creating build\temp.win-amd64-2.7\Release\sasl
C:\Users\user\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -Isasl -Ic:\python27\include -Ic:\python27\PC /Tpsasl/saslwrapper.cpp /Fobuild\temp.win-amd64-2.7\Release\sasl/saslwrapper.obj
saslwrapper.cpp
sasl/saslwrapper.cpp(247) : fatal error C1083: Cannot open include file: 'stdint.h': No such file or directory
error: command 'C:\\Users\\user\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python\\9.0\\VC\\Bin\\amd64\\cl.exe' failed with exit status 2

问题可能是因为 Visual C++ for Python 不支持较旧的 c 头文件。谁能帮我安装?

编辑:我安装了mingw,并尝试使用pip--compiler=mingw32 选项进行安装。现在它给了我以下错误:

C:\MinGW\bin\gcc.exe -mdll -O -Wall -Isasl -Ic:\python27\include -Ic:\python27\PC -c sasl/saslwrapper.cpp -o build\temp.win-amd64-2.7\Release\sasl\saslwrapper.o
In file included from sasl/saslwrapper.cpp:254:0:
sasl/saslwrapper.h:22:23: fatal error: sasl/sasl.h: No such file or directory
 #include <sasl/sasl.h>
                       ^
compilation terminated.
error: command 'C:\\MinGW\\bin\\gcc.exe' failed with exit status 1

编辑 2:我下载了 Cyrus sasl C 库并将头文件复制到 mingw 查找头文件的文件夹(即C:\MinGW\lib\gcc\mingw32\4.9.3\include\sasl)。现在,我得到了这个错误:

In file included from sasl/saslwrapper.cpp:254:0:
sasl/saslwrapper.h: In member function 'void saslwrapper::ClientImpl::interact(sasl_interact_t*)':
sasl/saslwrapper.h:442:41: error: 'getpass' was not declared in this scope
         char* pass = getpass(ppt.c_str());
                                         ^
sasl/saslwrapper.h:437:11: warning: unused variable 'input' [-Wunused-variable]
     char* input;
           ^
sasl/saslwrapper.cpp: In function 'void __Pyx_RaiseArgtupleInvalid(const char*, int, Py_ssize_t, Py_ssize_t, Py_ssize_t)':
sasl/saslwrapper.cpp:3225:59: warning: unknown conversion type character 'z' in format [-Wformat=]
                  (num_expected == 1) ? "" : "s", num_found);
                                                           ^
sasl/saslwrapper.cpp:3225:59: warning: format '%s' expects argument of type 'char*', but argument 5 has type 'Py_ssize_t {aka int}' [-Wformat=]
sasl/saslwrapper.cpp:3225:59: warning: unknown conversion type character 'z' in format [-Wformat=]
sasl/saslwrapper.cpp:3225:59: warning: too many arguments for format [-Wformat-extra-args]
error: command 'C:\\MinGW\\bin\\gcc.exe' failed with exit status 1

我下载的sasl库好像没有getpass的任何功能。我环顾四周,发现 getpass 函数仅适用于 linux 并更改终端状态,如 linux man page 所示。我从here 下载了库。任何解决方法的想法?

【问题讨论】:

    标签: python visual-c++ pip mingw sasl


    【解决方案1】:

    如果您没有安装 Chocolatey,请使用这些说明安装它chocolatey install

    那就试试吧

    choco install msinttypes
    

    从命令提示符。

    然后尝试再次安装 thrift_sasl

    【讨论】:

    • 无法安装msinttypes,因为我没有管理员权限。或者特别是Requested registry access is not allowed.
    【解决方案2】:

    运行以下命令后,“pip install sasl”和“pip install thrift_sasl”安装成功。

    $ sudo yum install gcc-c++ python-devel.x86_64 cyrus-sasl-devel.x86_64

    【讨论】:

    • 问题与 Windows 有关,运行 yum 无济于事。
    【解决方案3】:

    我在尝试安装 sasl 时遇到了同样的问题。这是我的解决方案:

    1. yum search sasl
    2. sudo yum install cyrus-sasl-devel saslwrapper
    3. sudo pip install sasl

    宾果!希望能帮到你。

    【讨论】:

    • Yum 安装适用于 Linux,而不是 Windows。和 sudo 一样。
    【解决方案4】:

    我在尝试安装 0.2.1 版本时遇到了同样的问题,但后来我尝试了最新版本 (0.4.3),并且安装没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-05
      • 2012-08-26
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 2017-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多