安装 pip pyicu 时出错
Posted
技术标签:
【中文标题】安装 pip pyicu 时出错【英文标题】:Error installing pip pyicu 【发布时间】:2017-04-17 20:02:47 【问题描述】:我一直在尝试在我的 Mac 上安装 musicbrainz 服务器,并且有一个步骤是我必须安装 pip pyicu。我不断收到此错误:
Collecting pyicu
Downloading PyICU-1.9.5.tar.gz (181kB)
100% |████████████████████████████████| 184kB 515kB/s
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/tmp/pip-build-E50o2C/pyicu/setup.py", line 11, in <module>
ICU_VERSION = subprocess.check_output(('icu-config', '--version')).strip()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 566, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/tmp/pip-build-E50o2C/pyicu/
我已尝试下载 ez_setup.py 并执行 python ez_setup.py。我已经升级了 setuptools 并分别下载了它们。我不确定还有什么可以尝试的。请帮忙!
【问题讨论】:
musicbrainz服务器是用Perl写的,哪一部分让你尝试安装pyicu? 我不断收到此错误:致命错误:尝试 make 命令后未找到“unicode/utypes.h”文件。之后我尝试 pip install polyglot,但随后我得到命令“python setup.py egg_info”失败,错误代码为 1。我只需要解决第一个错误,但我尝试了很多选项,我相信 pyicu 是一个尝试. 在命令行中运行:export PYICU_CFLAGS=-std=c++11:-DPYICU_VER='"2.0.3"'
为我工作。
【参考方案1】:
我在 ubuntu 14.04 和 16.04 上遇到了这个问题。要解决此问题,请安装 libicu-dev 然后再次尝试安装。我做了
$sudo apt install libicu-dev
$pip install pyicu
【讨论】:
这个实际上在我的 Ubuntu 机器上帮助了我!!谢谢@Mungai @StevenYong,为此苦苦挣扎,很高兴知道它对您也有帮助。【参考方案2】:我在我的 Mac 上尝试安装 polyglot 时遇到了这个问题(polyglot 需要 pyicu)。以下为我解决了这个问题。
# Install icu
brew install icu4c
# check newest version
ls /usr/local/Cellar/icu4c/
# Edit pyicu installer to work
git clone https://github.com/ovalhub/pyicu.git
# edit setup.py not to query for the version, i.e. change
# ICU_VERSION = subprocess.check_output(('icu-config', '--version')).strip()
# to whatever your version is, e.g.
# ICU_VERSION = '57.1'
# Install pyicu
env LDFLAGS=-L/usr/local/opt/icu4c/lib CPPFLAGS=-I/usr/local/opt/icu4c/include DYLD_LIBRARY_PATH=-L/usr/local/opt/icu4c/lib python setup.py build
env LDFLAGS=-L/usr/local/opt/icu4c/lib CPPFLAGS=-I/usr/local/opt/icu4c/include DYLD_LIBRARY_PATH=-L/usr/local/opt/icu4c/lib sudo python setup.py install
# Change DYLD_LIBRARY_PATH (not sure if req'd)
DYLD_LIBRARY_PATH=/usr/local/Cellar/icu4c/version, e.g. 57.1/:$DYLD_LIBRARY_PATH
echo $DYLD_LIBRARY_PATH
# Icu works now from python, and you can proceed with polyglot
$ python
>>> import icu
$ pip install polyglot
$ python
>>> import polyglot
【讨论】:
我正在尝试上传到 Heroku,如何按照这些步骤使用 Aptfile 规避 PyICU 错误?【参考方案3】:让我让它工作:
1) 使用 brew 安装 icu4c
:
brew install icu4c
brew link icu4c --force
2) 检查版本:
ls /usr/local/Cellar/icu4c/
它会提示类似:
64.2
3) 执行以下命令,替换上一步中的正确版本(第一行只有整数部分,第二行和第三行有小数部分):
export ICU_VERSION=64
export PYICU_INCLUDES=/usr/local/Cellar/icu4c/64.2/include
export PYICU_LFLAGS=-L/usr/local/Cellar/icu4c/64.2/lib
4) 最后为pyicu安装python包:
pip install pyicu --upgrade
如果您在上述情况下失败(在 OS X 10.15
上已经发生在我身上),您可能需要:
brew install pkg-config
export PYICU_CFLAGS=-std=c++11:-DPYICU_VER='"2.3.1"'
【讨论】:
以下步骤 1-4 对我不起作用。我必须安装pkg-config
并导出PYICU_CFLAGS
,它对我有用。【参考方案4】:
在 macOS 10.14.2 上,只需将包含 icu-config
的目录添加到 PATH
就可以了:
brew install icu4c
export PATH="/usr/local/opt/icu4c/bin:$PATH"
pip install pyicu
其实这是brew info icu4c
建议的:
==> Caveats
icu4c is keg-only, which means it was not symlinked into /usr/local,
because macOS provides libicucore.dylib (but nothing else).
If you need to have icu4c first in your PATH run:
echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> ~/.zshrc
For compilers to find icu4c you may need to set:
export LDFLAGS="-L/usr/local/opt/icu4c/lib"
export CPPFLAGS="-I/usr/local/opt/icu4c/include"
For pkg-config to find icu4c you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"
【讨论】:
【参考方案5】:以下解决方案仅适用于 MAC OSX-
尝试使用 brew 安装 pyICU:
brew install icu4c
如果它说它已经安装并且只需要链接,那么试试这个:
brew link icu4c
这会在“/usr/local/Cellar/icu4c/...”中创建相对符号链接
【讨论】:
谢谢,对我有用的是:brew link --force icu4c
然后安装 pyICU,然后 brew unlink icu4c
以避免在构建依赖于 mac 的 lib 版本的软件时发生冲突。
mac os 10.13.6 : "brew install icu4c" 然后 "brew link --force icu4c" 为我工作【参考方案6】:
以下解决方案在 OSX 上对我有用:
# Install ucu4c via Brew
brew install icu4c
# Create relative symlinks for icu4c
brew link --force icu4c
# Install pyicu via pip
# Make sure ICU_VERSION matches the one you just installed
sudo ICU_VERSION=60.2 pip install pyicu
【讨论】:
+1 这对我来说实际上也适用于 Sierra。甚至与 brew 的强制链接也不起作用 - 明确告诉选择哪个版本!谢谢。【参考方案7】:似乎为brew
打包的icu4c
的当前版本没有正确链接icu-config
文件。
运行brew link icu4c --force
为您提供了解决此问题的必要信息,但无法自动链接它。
$ brew link --force icu4c
Warning: Refusing to link macOS-provided software: icu4c
If you need to have icu4c first in your PATH run:
echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> ~/.bash_profile
For compilers to find icu4c you may need to set:
export LDFLAGS="-L/usr/local/opt/icu4c/lib"
export CPPFLAGS="-I/usr/local/opt/icu4c/include"
For pkg-config to find icu4c you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"
您需要在安装icu4c
到brew
后运行以下命令以将icu-config
放入您的路径(假设您将bash 作为shell 运行):
echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
之后,您应该可以安装pyicu
,而无需任何额外的环境变量:
$ pip install --no-cache-dir pyicu
Collecting pyicu
Downloading https://files.pythonhosted.org/packages/c2/15/0af20b540c828943b6ffea5677c86e908dcac108813b522adebb75c827c1/PyICU-2.2.tar.gz (211kB)
100% |████████████████████████████████| 215kB 4.9MB/s
Installing collected packages: pyicu
Running setup.py install for pyicu ... done
Successfully installed pyicu-2.2
总之,这是我为完成这项工作而运行的命令的完整列表:
brew install icu4c
brew link icu4c --force
echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
pip install --no-cache-dir pyicu
(顺便说一句,我遇到的许多解决方案都没有使用--no-cache-dir
选项和pip install
。我认为其中一些可能已经缓存了pyicu
的构建版本。我做了一段时间,这掩盖了这个问题。直到我尝试了这个选项,我才能够正确地重现和修复。)
【讨论】:
【参考方案8】:这失败了,因为icu4c
是一个仅限小桶的公式,您可以在brew info icu4c
的注意事项部分看到。
其他一些答案建议使用brew link icu4c
,但这可能导致其他问题,因为 macOS 已经提供了libicucore.dylib
。
pip install pyicu
失败是因为
icu-config
命令,因此icu-config
必须在PATH 中
将尝试运行pkgconfig ... icu-i18n
,因此icu4c 的.pc
文件必须在PKG_CONFIG_PATH
中
对于 macOS,如果您不想 brew link icu4c
并且只想让 icu4c 可用于您的 pip install
命令,那么您可以这样做:
brew install pkg-config icu4c
# brew info icu4c
export PATH="/usr/local/opt/icu4c/bin:$PATH"
export PATH="/usr/local/opt/icu4c/sbin:$PATH"
export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"
icu-config --version # 68.2
pkg-config --modversion icu-i18n # 68.2
pip install pyicu==2.6.0 # works because icu-config in PATH and pkgconfig can find icu4c
【讨论】:
【参考方案9】:我试图在 RHEL 中安装,我是从 tar.gz 文件安装的。 以下是命令:
/usr/local/bin/pip3 install -U setuptools
/usr/local/bin/pip3 install -U wheel
wget http://download.icu-project.org/files/icu4c/50.1.2/icu4c-50_1_2-src.tgz
tar -zxvf icu4c-50_1_2-src.tgz
cd icu
cd source
sudo ./configure --prefix=/usr
sudo make
sudo make install
icu-config --version
/usr/local/bin/pip3 install PyICU==2.0.6
【讨论】:
以上是关于安装 pip pyicu 时出错的主要内容,如果未能解决你的问题,请参考以下文章