Pip, pip3 и конфликтующие дистрибутивы Python
У меня проблемы с установкой пакетов Python PyTransit и ktransit в Anaconda 3 (в Linux). Кажется, что у многих других были подобные ошибки, но ни одно из их решений не помогло мне. Там происходит много вещей:
pip install ktransit
дает:
/usr/bin/ld: /home/name/anaconda3/lib/libgfortran.a(pause.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/home/name/anaconda3/lib/libgfortran.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
Я бы попробовал использовать./configure с --enable-shared, но там нет конфигурационного файла. Я пытался добавить extra_compile_args = ["-fPIC"], extra_link_args=["-fPIC"]
в setup.py (как в https://github.com/h5py/h5py/issues/851), но это ничего не сделало.
pip install pytransit
выдает разные ошибки:
#warning "Using deprecated NumPy API, disable it by " \
Warning: src/gimenez.f90:35: Illegal preprocessor directive
Warning: src/gimenez.f90:36: Illegal preprocessor directive
Warning: src/gimenez.f90:37: Illegal preprocessor directive
src/gimenez.f90:271.33:
real(8), dimension(CHUNK_SIZE, npol) :: d
1
Error: Symbol 'chunk_size' at (1) has no IMPLICIT type
Вот где это становится интересным. Использование pip3 (или sudo pip) позволяет успешно установить ktransit, но ничего не делает для pytransit. Pip и pip3, похоже, привязаны к разным местам:
which pip
/home/name/anaconda3/bin/pip
which pip3
/usr/local/bin/pip3
which python
/home/name/anaconda3/bin/python
Наконец, когда я пытаюсь импортировать ktransit в блокнот jupyter через anaconda, происходит сбой, но когда я импортирую ktransit в Jupyter QtConsole, он завершается успешно, но, похоже, содержит сам себя и не обеспечивает реальной функциональности. Я имею в виду, что я не могу ссылаться на что-либо внутри модуля, и:
Help on package ktransit:
NAME
ktransit
PACKAGE CONTENTS
ktransit (package)
setup
FILE
(built-in)
Я думаю, что какая-либо версия python, связанная с /usr/bin, каким-то образом мешает мне... или, может быть, что-то не так с моим gcc или libgfortran? У меня gcc версий 4.8.5 и 6 (gcc --version дает 4.8.5, но -update-alternatives говорит, что есть только одна версия, 6).
Спасибо, что нашли время, чтобы прочитать это далеко. Буду очень признателен за любые предложения или идеи!
1 ответ
Разобрался - я удалил Anaconda, убедился, что мой python указывает в правильном направлении, а затем использовал sudo python -m pip install. Спасибо Нагеву за то, что он заставил меня избавиться от Анаконды!