今天,我已经使用brew upgrade命令升级了python3.7。

而且我尝试使用pip3安装PyYAML软件包。

我有这个错误,不知道..

%pip3安装PyYAML

检查libyaml是否可链接
langbuild/temp.macosx-10.13-x86_64-3.7/check_libyaml.o -L/usr/local/lib -L ​​/usr/local/opt/openssl/lib -L ​​/usr/local/opt/sqlite/lib -lyaml -o build/temp.macosx-10.13-x86_64-3.7/check_libyaml
建立'_yaml'扩展名
创建build/temp.macosx-10.13-x86_64-3.7/ext
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -I/usr/local/include -I/usr/local/opt/openssl/包括-I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/include/python3.7m -c ext/_yaml.c -o build/temp.macosx-10.13-x86_64-3.7/ext/_yaml.o
在ext/_yaml.c:271包含的文件中:
ext/_yaml.h:10:9:警告:'PyString_CheckExact'宏已重新定义[-Wmacro-redefined]
#define PyString_CheckExact PyBytes_CheckExact
^
ext/_yaml.c:139:11:注意:以前的定义在这里
#define PyString_CheckExact PyUnicode_CheckExact
^
ext/_yaml.c:1410:17:警告:从'const char *'分配给'char *'会丢弃限定符[-Wincompatible-pointer-types-discards-qualifiers]
__pyx_v_value = yaml_get_version_string();
^ ~~~~~~~~~~~~~~~~~~~~~~~~
ext/_yaml.c:2577:52:警告:不兼容的指针类型传递了'int(void *,char *,size_t,size_t *)'(aka'int(void *,char *,unsigned long,unsigned long *)' )转换为类型'yaml_read_handler_t *'的参数(又名'int(*)(void *,unsigned char *,unsigned long,unsigned long *)')[-Wincompatible-pointer-types]
yaml_parser_set_input((&& __ pyx_v_self-> parser),__pyx_f_5_yaml_input_handler,((void *)__ pyx_v_self));
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/yaml.h:1370:30:注意:此处将参数传递给参数“handler”

.......

最后

/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:238:15:注意:此处声明了“curexc_traceback”
PyObject * curexc_traceback;
^
生成51条警告和15条错误。
错误:命令“clang”失败,退出状态为1

----------------------------------------
命令“/usr/local/opt/python/bin/python3.7 -u -c”导入设置工具,标记化; __ file __ ='/private/tmp/pip-install-exbgmayz/PyYAML/setup.py'; f = getattr (tokenize,'open',open)(__ file __); code = f.read()。replace('\r\n','\n'); f.close(); exec(compile(code,__file__, 'exec'))“install --record/private/tmp/pip-record-n11vy5s0/install-record.txt --single-version-externally-managed --compile”失败,错误代码为/private/tmp/pip-install-exbgmayz/PyYAML/

我曾尝试解决此问题,但仍然不知道。

  • https://github.com/yaml/pyyaml/issues/126
  • How do I install the yaml package for Python?

  • 我该如何解决此问题..?

    最佳答案

    PyYAML的C扩展不能在3.7上编译,这是该错误消息所针对的以及问题126中的某些消息所引用的内容。 PyYAML安装程序中有一种机制可以测试是否可以编译C扩展,它主要检查libyaml是否可用。

    我假设您已升级到3.7.0(而不是在编写时升级Python3.7),所以我建议您降级到3.6。尽管PyYAML在PyPI上的页面表明仅支持3.4和3.5,但似乎3.6是可以的。

    如果您无法降级Python,并且现在需要3.7的功能,则可以考虑使用ruamel.yaml(免责声明:我是该软件包的作者)。它本质上是PyYAML的超集,因此通常

    import ruamel.yaml as yaml
    

    应该可以使您的程序正常运行。由于PyPI安装中提供了适用于3.7的macOS轮子,因此不会造成任何问题。

    关于python - pip3安装PyYAML失败。(python3.7,macOS High Sierra),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51165585/

    10-10 15:57