Ответ 1
pip
имеет флаг --global-option
Вы можете использовать его для передачи дополнительных флагов в build_ext
.
Например, чтобы добавить флаг -I
:
pip install --global-option=build_ext --global-option="-I/home/users/abc/include/" pyOpenSSL
Я пытаюсь установить библиотеку pyleargist
. Для этого требуется установить еще один lib libfftw3
, который я установил вручную. Поскольку у меня нет привилегии root, я должен установить libfftw3
в мой домашний каталог: ~/usr/include
и ~/usr/lib
. Затем я следую этому сообщению: https://superuser.com/info/242190/how-to-install-matplotlib-on-os-x, добавил:
export LDFLAGS="-L~/usr/lib"
export CFLAGS="-I~/usr/include
Чтобы pip
знал, что ему нужно проконсультироваться с /usr
, чтобы получить файлы include (.h) и lib (.a, *.so). Однако во время работы pip install --user pyleargist
он жалуется:
gcc-4.4.real: src/leargist.c: No such file or directory
gcc-4.4.real: no input files
error: command 'gcc' failed with exit status 1
Я предполагаю, что произошло, что путь неправильный, так что он не может найти файлы *.c
(я думаю, pip
должен был загружать файл где-нибудь, но не уверен, где он).
Итак, мои вопросы таковы: 1) в этом конкретном случае, как установить pyleargist
с include
и lib
в под ~/usr
? 2) в более общем плане, как можно предоставить дополнительный путь для pip
, чтобы он знал, где можно получить дополнительные файлы include или libs, если они не найдены в пути по умолчанию?
p.s Я нахожусь на машине ubuntu
без привилегии sudo
.
ref:
https://pypi.python.org/pypi/pyleargist/1.0.1
http://www.fftw.org/
pip
имеет флаг --global-option
Вы можете использовать его для передачи дополнительных флагов в build_ext
.
Например, чтобы добавить флаг -I
:
pip install --global-option=build_ext --global-option="-I/home/users/abc/include/" pyOpenSSL
Если у вас нет корня, вы можете получить виртуальную среду нет корня, чтобы получить один, и ваш путь будет в доме
curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.10.1.tar.gz
tar xvfz virtualenv-1.10.1.tar.gz
cd virtualenv-1.10.1.tar.gz
python virtualenv.py myVE
тогда ваш путь будет установлен в вашем доме:
cd myVE/bin
./python
>>> import sys
>>> sys.path
['', '/home/foobar/temp/virtualenv-1.10.1/myVE/lib/python33.zip', '/home/foobar/temp/virtualenv-1.10.1/myVE/lib/python3.3', '/home/foobar/temp/virtualenv-1.10.1/myVE/lib/python3.3/plat-linux', '/home/foobar/temp/virtualenv-1.10.1/myVE/lib/python3.3/lib-dynload', '/usr/lib64/python3.3', '/usr/lib/python3.3', '/usr/lib/python3.3/plat-linux', '/home/foobar/temp/virtualenv-1.10.1/myVE/lib/python3.3/site-packages']
>>>
Это была полезная тема. Чтобы добавить к этому, вы также можете использовать pip без root, если вы передаете флаг --user
в конце:
pip install --global-option="-I/home/users/abc/include/" mpi4py --user
Например, если вы используете python-v2.7, указанная выше команда устанавливает пакет python в /home/username/.local/lib/python2.7/site-packages