2017-01-30 6 views
0

Я хочу использовать gmpy2 с Python 2.7, но когда я пытаюсь импортировать его я получаю:gmpy2 устанавливается, но не может найти libmpc.so.3

>>> import gmpy2 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: libmpc.so.3: cannot open shared object file: No such file or directory 

Я установил gmpy2 используя пип: pip install -user gmpy2 и установки выглядит нормально, кроме как

Could not find .egg-info directory in install record for gmpy2 

, но после этого говорится, что установка прошла успешно.

Я установил MPC (1.0.3), GMP (6.1.1) и MPFR (3.1.4), и все они работают, и я имею в виду, что я могу позвонить gcc foo.c -lmpc и gcc bar.c -lmpfr, и код компилируется и работает как ожидается , У меня также работает gmpy, используя pip install. Я думаю, что проблема будет заключаться в том, что они не будут установлены в каталогах по умолчанию, поскольку у меня нет прав sudo.

Каталог, в котором libmpc.so.3 находится в ССАГПЗ вызова, пип выплевывает, я также установил CPATH и CPPFLAGS посмотреть в my_prefix/include и LDFLAGS смотреть my_prefix/lib.

Я действительно не хочу использовать функциональность от MPC, поэтому, если есть простая опция не устанавливать эту часть gmpy2, я был бы доволен этим.

Я действительно смущен, у меня было это, что pip не смог создать библиотеку, и я ушел и установил зависимости, но обычно после того, как библиотека прошла пропуск, она работает.

ответ

1

Я утверждаю gmpy2 и есть несколько опций командной строки, которые могут быть переданы в setup.py, которые могут помочь. Я не могу проверить синтаксис пипа прямо сейчас, но вот несколько вариантов:

--shared=/path/to/gmp,mpfr,mpc сконфигурирует gmpy2 для загрузки библиотек из указанного каталога.

--static или --static=/path/to/gmp,mpfr,mpc создаст статически связанную версию gmpy2, если соответствующие библиотеки могут быть найдены.

Вы также можете попробовать построить с помощью setup.py напрямую. Это может привести к улучшению сообщений об ошибках. Опять же, непроверенная команда:

python setup.py build_ext --static=/path/to/gmp,mpfr,mpc должен составлять автономный, статически связанный gmpy2.so, который необходимо будет переместить в соответствующее место.

Update

Я был в состоянии проверить варианты пип.

Если вы пытаетесь использовать версии GMP, MPFR и MPC, которые не являются дистрибутивами Linux, вам нужно будет указать расположение новых файлов в базовом setup.py, который вызывается pip. Например, я обновил версии, установленные локально в /home/case/local. Следующая команда будет настроить gmpy2 использовать эти версии:

pip install --install-option="--shared=/home/case/local" --user gmpy2 

Для компиляции статически скомпонованный (например, для упрощения распределения к другим системам в кластере), вы должны использовать следующее:

pip install --install-option="--static=/home/case/local" --user gmpy2 

setup.py будет использовать указанный базовый каталог, чтобы настроить правильный путь INCLUDE (/ home/case/local/include) и путь библиотеки времени выполнения (/ home/case/local/lib).

+0

Спасибо! Я использовал 'pip install --install-option =" - shared =/home/case/local "--user gmpy2', где'/home/case/local' является префиксом, который я использовал при установке GMP и MPC, и он работает отлично сейчас. –

0

Попробуйте сделать следующее, как это может мне исправлена ​​в более старой версии:

  1. пункт установить --upgrade Setuptools пип

  2. пип деинсталлировать gmpy2

  3. пункт установить gmpy2

+0

У меня возникли проблемы с обновлением setuptools, так как я не могу обновить глобальный, я запускаю 'pip install --user --upgrade setuptools', но он не работает. Спасибо за ваше предложение, я дам вам знать, успеваю ли я. –