python - 使用 pip install 时如何解决 clang 错误
问题描述
当我执行
pip install -r requirements.txt -i https://pypi.doubanio.com/simple
有一个错误:
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -DLIBART_COMPILATION -DLIBART_VERSION="2.3.12" -I/private/var/folders/4h/ktzb3kwn0zb24zppgz9hzzv80000gp/T/pip-build-l4jdu8pd/reportlab/src/rl_addons/renderPM -I/private/var/folders/4h/ktzb3kwn0zb24zppgz9hzzv80000gp/T/pip-build-l4jdu8pd/reportlab/src/rl_addons/renderPM/libart_lgpl -I/private/var/folders/4h/ktzb3kwn0zb24zppgz9hzzv80000gp/T/pip-build-l4jdu8pd/reportlab/src/rl_addons/renderPM/gt1 -I/Users/xuhongxin/.pyenv/versions/3.6.5/include/python3.6m -c /private/var/folders/4h/ktzb3kwn0zb24zppgz9hzzv80000gp/T/pip-build-l4jdu8pd/reportlab/src/rl_addons/renderPM/gt1/gt1-namecontext.c -o build/temp.macosx-10.15-x86_64-3.6/private/var/folders/4h/ktzb3kwn0zb24zppgz9hzzv80000gp/T/pip-build-l4jdu8pd/reportlab/src/rl_addons/renderPM/gt1/gt1-namecontext.o
/private/var/folders/4h/ktzb3kwn0zb24zppgz9hzzv80000gp/T/pip-build-l4jdu8pd/reportlab/src/rl_addons/renderPM/gt1/gt1-namecontext.c:100:9: error: implicitly declaring library function 'strlen' with type 'unsigned long (const char *)' [-Werror,-Wimplicit-function-declaration]
len = strlen (s);
^
/private/var/folders/4h/ktzb3kwn0zb24zppgz9hzzv80000gp/T/pip-build-l4jdu8pd/reportlab/src/rl_addons/renderPM/gt1/gt1-namecontext.c:100:9: note: include the header <string.h> or explicitly provide a declaration for 'strlen'
/private/var/folders/4h/ktzb3kwn0zb24zppgz9hzzv80000gp/T/pip-build-l4jdu8pd/reportlab/src/rl_addons/renderPM/gt1/gt1-namecontext.c:102:3: error: implicitly declaring library function 'memcpy' with type 'void *(void *, const void *, unsigned long)' [-Werror,-Wimplicit-function-declaration]
memcpy (new, s, len);
^
/private/var/folders/4h/ktzb3kwn0zb24zppgz9hzzv80000gp/T/pip-build-l4jdu8pd/reportlab/src/rl_addons/renderPM/gt1/gt1-namecontext.c:102:3: note: include the header <string.h> or explicitly provide a declaration for 'memcpy'
/private/var/folders/4h/ktzb3kwn0zb24zppgz9hzzv80000gp/T/pip-build-l4jdu8pd/reportlab/src/rl_addons/renderPM/gt1/gt1-namecontext.c:172:10: error: implicitly declaring library function 'strcmp' with type 'int (const char *, const char *)' [-Werror,-Wimplicit-function-declaration]
if (!strcmp (nc->table[i & mask].name, name))
^
/private/var/folders/4h/ktzb3kwn0zb24zppgz9hzzv80000gp/T/pip-build-l4jdu8pd/reportlab/src/rl_addons/renderPM/gt1/gt1-namecontext.c:172:10: note: include the header <string.h> or explicitly provide a declaration for 'strcmp'
3 errors generated.
error: command 'clang' failed with exit status 1
解决方案
不要做。
可以通过设置编译器在命令行上完成:
python setup.py build_ext -c
python setup.py build_ext --help-compiler 查看可用选项。
但是,所有扩展都必须使用用于构建 python 发行版的相同编译器,因为扩展模块将由解释器加载。
如果它们是由不同的编译器构建的,则 python 解释器无法安全地加载它们。
对于 Anaconda,它的 python 发行版是用 MSVC 构建的,因此应该使用与 anaconda 环境相同的编译器进行扩展。在这种情况下,激活 anaconda 环境就足够了,尽管编译器可以像上面那样显式设置。
请参阅 Windows 编译器 python wiki 条目。
推荐阅读
- javascript - 如何为 adal-angular6 配置生成动态数据
- python-3.x - 关于熊猫数据框中的分组,如何计算一列与另一列的所有子列表的欧几里得距离?
- nativescript-angular - NativeScript 不显示自定义字体
- geolocation - 应使用哪种地理空间聚类方法在美国地图上实施具有约束的聚类分析?
- ios - 在 Xcode 10.2 中调整视图大小
- java - UnsupportedCommandException:使用 Appium 的混合 Android 应用程序尚未实现方法错误
- javascript - 移动网络 - 在 touchstart 事件上检测捏缩放级别
- html - 具有延迟和外观的水平滚动文本问题
- javascript - 使用 JavaScript 将 var res 更改为给定数组的最大值
- sql - 选择在不同行上具有 NBR 1 和 2 行的 ID