clang 在 macOS 上安装 pip 失败

clang fails with pip install on macos

我是运行pip install scrypt==0.8.0.
我收到以下错误:error: command '/usr/bin/clang' failed with exit status 1。 我安装了 xcode-select、gcc 等。当我尝试 cd 进入该文件夹时,它不存在并且 运行 clang --version 它给了我:

Apple LLVM version 9.0.0 (clang-900.0.38)
Target: x86_64-apple-darwin17.2.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

完整错误:https://pastebin.com/JZW1jRCy

嗯……看来问题出在苹果这边了。我能够在装有 High Sierra 的 Macbook 上重现该问题。我在 github 上发现 this 讨论关于 python 的其他加密库以及他们使用的解决方案对我有用。

$  env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include" pip install scrypt==0.8.0

Scrypt 安装没有任何问题,我可以在我的解释器中导入它:

$  python
Python 3.6.3 (default, Oct  4 2017, 06:09:15) 
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import scrypt
>>> dir(scrypt)
['ERROR_MESSAGES', 'IS_PY2', 'MAXMEMFRAC_DEFAULT', 'MAXMEM_DEFAULT', 'MAXTIME_DEFAULT', 'MAXTIME_DEFAULT_ENC', 'POINTER', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', '_crypto_scrypt', '_ensure_bytes', '_scrypt', '_scryptdec_buf', '_scryptenc_buf', 'c_char_p', 'c_double', 'c_int', 'c_size_t', 'c_uint32', 'c_uint64', 'cdll', 'create_string_buffer', 'decrypt', 'encrypt', 'error', 'hash', 'imp', 'os', 'pointer', 'sys']
>>>

不过,我看到 cryptography 库描述了替代解决方案 here。不幸的是,在使用上述解决方案后,我无法在本地重现该问题,所以我不能说它是否解决了问题。我建议先通过它,因为它似乎不那么具有干扰性。