2017-02-20 58 views
0

Я пытаюсь установить PyMC с помощью pip install pymc. Я считаю, что эта команда должна установить PyMC 2.3.6.Ошибка установки PyMC с помощью пипа

У PyMC есть несколько dependencies, которые у меня есть в PATH. Я запускаю OSX 10.11.2, и мой PATH включает в себя Python 2.7.13, NumPy 1.12.0, Matplotlib 2.0.0, gcc и gfortran.

Python (включая pip) был установлен с использованием Homebrew. NumPy и Matplotlib были установлены с использованием pip. Компилятор gfortran был загружен и установлен с GCC Wiki для этой установки.

Выполнение pip install pymc дал много результатов, включая следующие строки.


Collecting pymc 
    Using cached pymc-2.3.6.tar.gz 
    Complete output from command python setup.py egg_info: 
    running egg_info 
    running build_src 
    build_src 
    building extension "pymc.flib" sources 
    f2py options: ['skip:ppnd7'] 
    f2py:> build/src.macosx-10.11-x86_64-2.7/pymc/flibmodule.c 
    creating build 
    creating build/src.macosx-10.11-x86_64-2.7 
    creating build/src.macosx-10.11-x86_64-2.7/pymc 
    IOError: [Errno 2] No such file or directory: 'skip:ppnd7'. Skipping file "skip:ppnd7". 
    updatevars:gradlike: attempt to change 'dimension(nx)' to 'dimension(na)'. Ignoring. 
    updatevars:gradlike: attempt to change 'dimension(nx)' to 'dimension(nb)'. Ignoring. 
    updatevars:gradlike: attempt to change 'dimension (nmu)' to 'dimension(nmu)'. Ignoring. 
    updatevars:gradlike: attempt to change 'dimension (na)' to 'dimension(na)'. Ignoring. 
    rmbadname1: Replacing "index" with "index_bn". 
    Reading fortran codes... 
     Reading file 'pymc/flib.f' (format:fix,strict) 
    Line #34 in pymc/flib.f:"  PARAMETER (infinity = 1.7976931348623157d308)" 
     get_parameters: got "unexpected EOF while parsing (<string>, line 0)" on '' 

...

Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "/private/var/folders/2f/cr97n5v93mn04c3qbqd7r3q40000gn/T/pip-build-6Zmgcz/pymc/setup.py", line 124, in <module> 
    **(config_dict)) 
    File "/usr/local/lib/python2.7/site-packages/numpy/distutils/core.py", line 169, in setup 
    return old_setup(**new_attr) 

...

---------------------------------------- 
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/2f/cr97n5v93mn04c3qbqd7r3q40000gn/T/pip-build-6Zmgcz/pymc/ 

Как предложено в этих двух семечковые установки темы про egg_info ошибок [1, 2], Я побежал pip install —upgrade setuptools и pip install ez_setup. Как только эти элементы были установлены, я столкнулся с теми же типами ошибок, вставленных выше.

Как указано в других потоках установки пакетов, я готов использовать conda для установки PyMC, если я не могу решить эти проблемы. Тем не менее, я хотел бы сначала изучить эту проблему установки.

Может кто-нибудь узнать, что моя проблема здесь? Могут ли быть некоторые шаги, которые я могу предпринять, чтобы успешно установить PyMC с помощью pip?

ответ

0

У меня была та же проблема. Я не понимаю первопричины, но я исправил его, понизив numpy до версии 1.10.1: pip install numpy==1.10.1

+0

Спасибо. Это не сразу сработало для меня. Я закончил установку с Anaconda. – curiousStudent

0

Я также встретил эту проблему при попытке установить pymc из pip или исходного кода, но я нашел решение, которое может быть полезным. Причиной возникновения проблемы может быть файл setup.py, в котором скрипт проверяет компиляцию env. Я не очень внимательно прочитал код, но в функции build_ext() Я думаю, что коды сначала проверяют, установлены ли какие-либо среды компиляции в ОС. Если он установлен, скрипт будет использовать их по умолчанию; если нет, используйте их в другом месте (комментарий говорит «из источников netlib»).

Я полагаю, что проблема вызвана средами компиляции, которые уже были установлены в ОС, поэтому я изменяю файл setup.py, чтобы пропустить эту часть кодов и позволить скрипту использовать источник netlib. Затем я запускаю sudo python setup.py install. Есть некоторые сообщения об ошибках и предупреждениях, но папка «pymc» появляется в библиотеке python, и некоторые простые тестовые коды успешно выполняются.