在Mac上安装libicu-dev

17

如何在 Mac 上安装 libicu-dev。这是文档推荐的指令。

sudo apt-get install python-numpy libicu-dev

http://polyglot.readthedocs.org/en/latest/Installation.html

我正在使用anaconda,但它似乎总是出现一个问题

In file included from _icu.cpp:27:
    ./common.h:86:10: fatal error: 'unicode/utypes.h' file not found
    #include <unicode/utypes.h>

错误

4个回答

30

我刚刚在OSX上成功安装了PyICU,之前因为同样的错误而失败。以下是我的建议:

  1. 安装Homebrew(OSX的软件包管理器)
  2. brew install icu4c # 安装库;可能已经安装
  3. 验证必要的include目录是否存在:ls -l /usr/local/opt/icu4c/include/
  4. 如果没有该目录,则可能需要重新安装icu4u。我发现我不得不执行以下操作:
    1. brew remove icu4c
    2. brew install icu4c
  5. 尝试安装Polyglot以查看它是否能找到icu4c:pip install polyglot
  6. 如果仍然报错,可以尝试指定库位置:CFLAGS=-I/usr/local/opt/icu4c/include LDFLAGS=-L/usr/local/opt/icu4c/lib pip install polyglot

编辑:有进一步变化。我当前安装icu的过程:

  1. brew install icu4c
  2. brew link icu4c --force
  3. ICU_VERSION=<BREW_ICU_VERSION> CFLAGS=-I/usr/local/opt/icu4c/include LDFLAGS=-L/usr/local/opt/icu4c/lib pip install pyicu

2
你能修正 icu 库的名称吗?它应该是 icu4c 而不是 icu4u - Fabio Fumarola
你的回答有点难以理解。如果你能解释每个步骤的目的,特别是最后两个步骤,那就更好了。 - fraxture
我总是遇到相同的错误:RuntimeError: 请将ICU_VERSION环境变量设置为您已安装的ICU版本。 - Daniel García Baena
1
我还必须遵循 brew 的建议,将 icu4c 导出到我的 bash 配置文件中(在这种情况下是 zsh)echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.zshrc echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> ~/.zshrc - james-see
对我来说,安装成功了,但在导入过程中失败了。我不得不先卸载pyicu,然后使用 ICU_VERSION=<BREW_ICU_VERSION> CFLAGS=-I/usr/local/opt/icu4c/include LDFLAGS=-L/usr/local/opt/icu4c/lib pip install pyicu 重新安装它。 - bormat
我正在尝试在macOS Catalina 10.15.4上执行上述步骤,但无法成功。brew link force会抱怨环境变量,即使按要求设置了这些变量,它仍然会返回相同的警告。 - Daniel Vilas-Boas

20

2
这是唯一一个有效的答案。谢谢! - nova
对我来说,在Max OSx 10.11.6 - python 2.7上正确工作需要使用brew link icu4c --force命令。 - Domenico Monaco
我收到了“警告:拒绝链接macOS提供/遮蔽的软件:icu4c”的提示。 - ThCollignon

1

对我来说,只使用brew install和链接的简单答案并不起作用,所以我找到了以下解决方案使其可行:

1)使用brew安装icu4c

brew install icu4c

2) 检查版本:

ls /usr/local/Cellar/icu4c/

它会提示类似于:59.1

3)执行以下命令,将上一步中的适当版本进行替换(第一行只有整数部分,第二行和第三行有小数部分):

export ICU_VERSION=59
export PYICU_INCLUDES=/usr/local/Cellar/icu4c/59.1/include
export PYICU_LFLAGS=-L/usr/local/Cellar/icu4c/59.1/lib

4) 最后安装pyicu的Python包:

pip install pyicu

你尝试过像 python -c "import icu" 这样导入库吗?因为即使它安装成功了,你仍需要额外的设置才能正确地导入 icu - 参见 https://github.com/ovalhub/pyicu/issues/101 - loretoparisi

0

Mac OS 13.4,Python 3.8(Xcode),icu4c 72.1

我首先尝试了Jessamyn的答案(https://dev59.com/2FwX5IYBdhLWcg3w4S3R#33352241),使用ICU_VERSION=<BREW_ICU_VERSION> CFLAGS=-I/usr/local/opt/icu4c/include LDFLAGS=-L/usr/local/opt/icu4c/lib pip install pyicu,它构建成功了,但在运行时失败了:

ImportError: dlopen(/Users/catalinp/Library/Python/3.8/lib/python/site-packages/icu/_icu_.cpython-38-darwin.so, 0x0002): symbol not found in flat namespace '__ZN6icu_7218AnnualTimeZoneRule8MAX_YEARE'

以下方法对我有效:

PKG_CONFIG_PATH=/usr/local/opt/icu4c/lib/pkgconfig pip3 install pyicu

注意,在实践中,我还使用了--force-reinstall --ignore-installed --no-binary :all:来强制pip进行重建。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接