简体   繁体   English

安装 pip pyicu 时出错

[英]Error installing pip pyicu

I have been trying to install musicbrainz server on my mac and there is a step where I have to install pip pyicu.我一直在尝试在我的 mac 上安装 musicbrainz 服务器,并且有一个步骤我必须安装 pip pyicu。 I keep getting this error:我不断收到此错误:

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/

I have tried downloading ez_setup.py and doing python ez_setup.py.我试过下载 ez_setup.py 并执行 python ez_setup.py。 I have upgraded the setuptools and downloaded those separately as well.我已经升级了 setuptools 并单独下载了它们。 I am not sure what else there is to try.我不确定还有什么可以尝试的。 Please help!请帮忙!

I faced this issue on ubuntu 14.04 and 16.04.我在 ubuntu 14.04 和 16.04 上遇到过这个问题。 To fix this issue, install libicu-dev then try installing again.要解决此问题,请安装 libicu-dev,然后再次尝试安装。 I did我做了

$sudo apt install libicu-dev
$pip install pyicu

I was facing this issue on my mac when trying to install polyglot (pyicu is needed for polyglot).尝试安装多语言时,我在我的 mac 上遇到了这个问题(多语言需要 pyicu)。 The following resolved this for me.以下为我解决了这个问题。

# 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

for me to get it works:让我得到它的工作:

1) install icu4c with brew: 1)用brew安装icu4c

brew install icu4c
brew link icu4c --force

2) check the version: 2)检查版本:

ls /usr/local/Cellar/icu4c/

it prompts something like: 64.2它提示类似: 64.2

3) execute bellow commands with substitution of proper version from previous step (first line only integer part, second and third line with decimal part): 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) finally install python package for pyicu: 4)最后为pyicu安装python包:

pip install pyicu --upgrade

IF YOU FAIL with above (happen already to me on OS X 10.15 ) you may need:如果您在上面失败(在 OS X 10.15上已经发生在我身上),您可能需要:

brew install pkg-config

export PYICU_CFLAGS=-std=c++11:-DPYICU_VER='"2.3.1"'

On macOS 10.14.2 simply adding the directory containing icu-config to the PATH did the trick for me:在 macOS 10.14.2 上,只需将包含icu-config的目录添加到PATH就对我有用:

brew install icu4c
export PATH="/usr/local/opt/icu4c/bin:$PATH"
pip install pyicu

In fact, this is suggested by brew info icu4c :事实上,这是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"

Below solution is for MAC OSX only-以下解决方案仅适用于 MAC OSX-

try installing pyICU using brew:尝试使用 brew 安装 pyICU:

 brew install icu4c

if it says that it's already installed and just need to be linked, then try this:如果它说它已经安装并且只需要链接,那么试试这个:

 brew link icu4c

This create relative symlinks in "/usr/local/Cellar/icu4c/..."这会在“/usr/local/Cellar/icu4c/...”中创建相对符号链接

Following solution worked for me on OSX:以下解决方案在 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

It seems like the current version of icu4c packaged for brew does not link the icu-config file properly.似乎为brew打包的当前版本的icu4c没有正确链接icu-config文件。

Running brew link icu4c --force gives you the necessary information to address this, but fails to link it automatically.运行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"

You need to run the following after installing icu4c through brew to get icu-config into your path (assuming you're running bash as your shell):在通过brew安装icu4c后,您需要运行以下icu4c以将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

After that, you should be able to install pyicu without any additional environment variables:之后,您应该能够在没有任何额外环境变量的情况下安装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

In summary, here's a complete list of commands i ran to make this work:总而言之,这是我为完成这项工作而运行的完整命令列表:

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

(As an aside, many of the solutions i came across do not use the --no-cache-dir option with pip install . I think some of them may have cached built version of pyicu . I did for a while, which masked the issue. It wasn't until i tried this option that i was able to reproduce and fix appropriately.) pyicu ,我遇到的许多解决方案都没有在pip install使用--no-cache-dir选项。我认为其中一些可能已经缓存了pyicu构建版本。我做了一段时间,这掩盖了问题。直到我尝试了这个选项,我才能够正确地重现和修复。)

I was trying to install in RHEL and I installed from the tar.gz file.我试图在 RHEL 中安装,我从 tar.gz 文件安装。 Below are the commands:下面是命令:

    /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

This fails because icu4c is a keg-only formula as you can see in the Caveats section of brew info icu4c .这失败了,因为icu4c是一个仅限桶的公式,您可以在brew info icu4c的警告部分brew info icu4c

Some other answer recommend to use brew link icu4c but that may cause other issues as macOS already provides libicucore.dylib .其他一些答案建议使用brew link icu4c但这可能会导致其他问题,因为 macOS 已经提供libicucore.dylib

pip install pyicu fails because pip install pyicu失败,因为

  • will try run icu-config command, so icu-config must be in the PATH将尝试运行icu-config命令,因此icu-config必须在 PATH 中
  • will try to run pkgconfig ... icu-i18n so the .pc files for icu4c must be in the PKG_CONFIG_PATH将尝试运行pkgconfig ... icu-i18n所以.pc文件必须在PKG_CONFIG_PATH

For macOS if you don't want to brew link icu4c and just want to make icu4c available to your pip install command then you can do this instead:对于 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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM