#python
Вопрос:
У меня возникли проблемы при попытке установить модули python с помощью pip, используя локальную версию python/pip, установленную в моем домашнем каталоге. Во-первых, это должно доказать, что моя переменная PATH установлена правильно:
command -v python
/home/myuserid/PYTHON4/bin/python
command -v python
/home/myuserid/PYTHON4/bin/pip
Затем я пытаюсь установить модули python с помощью pip. Некоторые модули успешно устанавливаются. Но один по имени matlabplot создает мне проблемы. В частности, я бегу
pip install matplotlib --target=/home/myuserid/PYTHON4/PYTHON
Ошибки заключаются в
Complete output from command /usr/local/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-VwF2LG/subprocess32/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('rn', 'n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-pj2g8u-record/install-record.txt --single-version-externally-managed --compile --home=/tmp/tmplDhrIG:
....
gcc -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.7 -c _posixsubprocess.c -o build/temp.linux-x86_64-2.7/_posixsubprocess.o
_posixsubprocess.c:16:10: fatal error: Python.h: No such file or directory
#include "Python.h"
С этим сообщением об ошибке связаны две проблемы:
- Во-первых, он использует /usr/local/bin/python. Это неправильный python (я ранее установил там python). Откуда это берется? Это не на моем пути. Если я распечатаю всю свою среду с помощью printenv, ее нигде не будет в списке.
- Во-вторых, команда компиляции gcc явно включает «- I/usr/include/python2.7» в командной строке. Этого не должно произойти, потому что я пытаюсь использовать локальный python, установленный в/p/home/myuserid/PYTHON4.
Я предполагаю, что причина в том, что я как-то не указываю, где установлен python. Как я могу устранить эти проблемы?
Ответ №1:
Избегайте pip install
, предпочитайте python -m pip install
. Таким образом, вы прямо указываете, что хотите использовать python
программу, для которой вы проверили путь. И вы можете играть во множество вариаций вокруг него:
python3 -m pip install
/usr/bin/python3 -m pip install
python3.9 -m pip install
- …
Что касается проблемы numpy, то это потому pip
, что вы не нашли уже скомпилированный numpy
для вашей платформы. Это может быть связано с тем , что вы используете старую версию или pip
, чтобы вы могли сначала попробовать python -m pip install --upgrade pip
, и попробуйте установить numpy снова.
Вы также можете взглянуть на https://pypi.org/simple/numpy, вы увидите список файлов, таких как:
numpy-1.21.2-cp38-cp38-win_amd64.whl
numpy-1.21.2-cp39-cp39-macosx_11_0_arm64.whl
numpy-1.21.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
whl
файлы предварительно скомпилированы, но для конкретных платформ и конкретных версий Python здесь 3 колеса, которые я перечислил, предназначены для numpy 2.21.2, для cpython 3.9, для Windows, macosx и многих линуксов.
Может быть, ваш конкретный набор версий Python / версии numpy / платформы не предварительно скомпилирован здесь?
Если вам действительно нужно позволить pip скомпилировать numpy, вам понадобится еще несколько зависимостей, отсутствие Python.h
одной из которых означает, что вам не хватает python3-dev
пакета из вашего дистрибутива.
Последний совет: вы должны использовать venv: venv создается определенной версией Python, и все установки выполняются внутри venv (так легко снимается: просто удалите каталог, если что-то пойдет не так).