Соберите Python как UCS-4 через pyenv

Я столкнулся с этой проблемой ImportError numpy/core/multiarray.so: undefined symbol: PyUnicodeUCS2_AsASCIIString при установке Python в pyenv-virtualenv.

В моем случае это происходит с пакетом matplotlib вместо numpy (как в вопросе выше), но в основном это та же проблема.

Ответ, данный в этом вопросе, прост:

Пересоберите NumPy для Python, созданного как UCS-4.

Я не знаю, как это сделать. В этот другой вопрос говорится, что нужно использовать:

./configure --enable-unicode=ucs4

но я не знаю, как использовать эту команду вместе с pyenv.

Эта проблема также упоминается в репозитории pyenv в списке проблем, а решение приведено в комментарий. К сожалению (для меня), я не могу понять, как применить исправление, описанное в указанном комментарии.

Итак, мой вопрос в основном таков: как мне собрать Python как UCS-4 через pyenv?


person Gabriel    schedule 13.08.2016    source источник


Ответы (1)


Установка python с pyenv с ucs2:

$ export PYTHON_CONFIGURE_OPTS=--enable-unicode=ucs2
$ pyenv install -v 2.7.11
  ...
$ pyenv local 2.7.11
$ pyenv versions
  system
* 2.7.11 (set by /home/nwani/.python-version)
$ /home/nwani/.pyenv/shims/python
Python 2.7.11 (default, Aug 13 2016, 13:42:13) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sysconfig
>>> sysconfig.get_config_vars()['CONFIG_ARGS']
"'--prefix=/home/nwani/.pyenv/versions/2.7.11' '--enable-unicode=ucs2' '--libdir=/home/nwani/.pyenv/versions/2.7.11/lib' 'LDFLAGS=-L/home/nwani/.pyenv/versions/2.7.11/lib ' 'CPPFLAGS=-I/home/nwani/.pyenv/versions/2.7.11/include '"

Установка python с pyenv с ucs4:

$ pyenv uninstall 2.7.11
pyenv: remove /home/nwani/.pyenv/versions/2.7.11? y
$ export PYTHON_CONFIGURE_OPTS=--enable-unicode=ucs4
$ pyenv install -v 2.7.11
...
$ pyenv local 2.7.11
$ pyenv versions
  system
* 2.7.11 (set by /home/nwani/.python-version)
$ /home/nwani/.pyenv/shims/python
Python 2.7.11 (default, Aug 13 2016, 13:49:09) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sysconfig
>>> sysconfig.get_config_vars()['CONFIG_ARGS']
"'--prefix=/home/nwani/.pyenv/versions/2.7.11' '--enable-unicode=ucs4' '--libdir=/home/nwani/.pyenv/versions/2.7.11/lib' 'LDFLAGS=-L/home/nwani/.pyenv/versions/2.7.11/lib ' 'CPPFLAGS=-I/home/nwani/.pyenv/versions/2.7.11/include '"
person Nehal J Wani    schedule 13.08.2016
comment
Большое спасибо, Нехал, ваш ответ очень четкий и описательный. - person Gabriel; 13.08.2016