Установка egenix-mx-base под virtualenv

  • By admin
  • Ср 22 Июнь 2011

Несколько человек, в том числе и я столкнулись с проблемой, когда из-под виртуальной среды невозможно установить модуль egenix-mx-base.

Установка через pip оканчивалась неудачей:

pip install egenix-mx-base
Downloading/unpacking egenix-mx-base
Downloading egenix-mx-base-3.2.0.tar.gz (4.6Mb): 4.6Mb downloaded
Running setup.py egg_info for package egenix-mx-base
Installing collected packages: egenix-mx-base
Running setup.py install for egenix-mx-base
error: None
Complete output from command /home/dmitry/web/openerp/bin/python -c "import setuptools; __file__='/home/dmitry/web/openerp/build/egenix-mx-base/setup.py'; execfile('/home/dmitry/web/openerp/build/egenix-mx-base/setup.py')" install --single-version-externally-managed --record /tmp/pip-NueJAA-record/install-record.txt --install-headers /home/dmitry/web/openerp/include/site/python2.7:
running install
running build
running mx_autoconf
error: None
----------------------------------------
Command /home/dmitry/web/openerp/bin/python -c "import setuptools; __file__='/home/dmitry/web/openerp/build/egenix-mx-base/setup.py'; execfile('/home/dmitry/web/openerp/build/egenix-mx-base/setup.py')" install --single-version-externally-managed --record /tmp/pip-NueJAA-record/install-record.txt --install-headers /home/dmitry/web/openerp/include/site/python2.7 failed with error code 1
Storing complete log in /home/dmitry/.pip/pip.log

Установка при помощи  easy_install давала примерно похожий результат:

easy_install egenix-mx-base
Searching for egenix-mx-base
Best match: egenix-mx-base 3.2.0
Processing egenix-mx-base-3.2.0.tar.gz
Running egenix-mx-base-3.2.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-gyJnYN/egenix-mx-base-3.2.0/egg-dist-tmp-ZbsIvy
Warning: Can't read registry to find the necessary compiler setting
Make sure that Python modules _winreg, win32api or win32con are installed.
error: Setup script exited with error: None

Попытка сборки из исходников так же оканчивалась неудачей:

egenix-mx-base-3.2.0$ python setup.py install
running install
running build
running mx_autoconf
error: None

Решение:

Благо на сайте разработчика сказано о том, что можно установить наш модуль без C компилятора. Но для этого сперва надо знать в какой кодировке скомпилирован питон: UTF-16 (UCS-2) или UTF-32 (UCS-4). Узнать это можно так:

$ python #запускаем питон
>>> import sys
>>> print sys.maxunicode

Если число равно 65535, то кодировка UTF-16 (UCS2), если 4294967295, то UTF-32 (UCS4).

Для UTF-16 строка установки будет такая:
easy_install -i http://downloads.egenix.com/python/index/ucs2/ egenix-mx-base
А для UTF-32 строка установки будет выглядеть так:
easy_install -i http://downloads.egenix.com/python/index/ucs4/ egenix-mx-base

Сайт разработчика: http://www.egenix.com/products/python/mxBase/