我正在尝试安装库pyleargist
。它需要手动安装另一个我已安装的lib libfftw3
。由于我没有root权限,因此我必须在我的主目录libfftw3
和~/usr/include
下安装~/usr/lib
。然后我关注这篇文章:https://superuser.com/questions/242190/how-to-install-matplotlib-on-os-x,补充道:
export LDFLAGS="-L~/usr/lib"
export CFLAGS="-I~/usr/include
因此pip
知道必须咨询/usr
以获取包含( .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
应该已经将文件下载到某个地方,但不确定它在哪里)。 / p>
所以我的问题如下:1)在这种特殊情况下,如何在pyleargist
下使用include
和lib
路径安装~/usr
? 2)更一般地说,如何为pip
提供额外的路径,以便它知道在默认路径中找不到其他包含文件或库的位置?
p.s我在没有ubuntu
权限的sudo
计算机上。
参考:
https://pypi.python.org/pypi/pyleargist/1.0.1
http://www.fftw.org/
答案 0 :(得分:21)
pip
有一个--global-option
标记
您可以使用它将其他标记传递给build_ext
。
例如,添加-I
标志:
pip install --global-option=build_ext --global-option="-I/home/users/abc/include/" pyOpenSSL
答案 1 :(得分:0)
如果你没有root,你可以得到一个virtual enviroment根本不需要根,你的路径就在家里
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']
>>>
答案 2 :(得分:0)
这是一个有用的主题。只是为了补充一点,如果你在最后传递--user
标志,你也可以使用没有root的pip:
pip install --global-option="-I/home/users/abc/include/" mpi4py --user
例如,如果您使用的是python-v2.7,则上面的命令会将python包安装到/home/username/.local/lib/python2.7/site-packages