无root权限的Linux服务器安装numpy、keras、theano的技术问询
无root权限下在个人目录安装Python依赖库的可行方案
我之前刚好碰到过几乎一模一样的场景,给你几个亲测有效的方案,按推荐程度排序:
方案一:使用pip的--user参数直接安装
这是最简单直接的方法,pip的--user参数会将所有依赖包安装到你的个人用户目录(默认路径是~/.local/lib/pythonX.Y/site-packages,X.Y对应你的Python版本),完全不需要root权限。
步骤:
- 首先确保你用的是对应Python版本的pip(比如你要用Python3.5,就用
pip3.5),避免装到Python2.7里:# 先升级pip到个人目录(如果pip版本太旧) pip3.5 install --user --upgrade pip - 安装所需依赖:
pip3.5 install --user numpy theano keras - 验证:打开Python3.5控制台,输入
import numpy,如果没有报错就说明安装成功。
注意:
~/.local/lib/python3.5/site-packages默认已经在Python的sys.path里,如果你的环境没自动识别,可以在代码开头添加:import sys sys.path.append("~/.local/lib/python3.5/site-packages")或者在终端设置环境变量:
export PYTHONPATH="$HOME/.local/lib/python3.5/site-packages:$PYTHONPATH"可以把这条命令加到你的
~/.bashrc或~/.profile里,每次登录自动生效。
方案二:手动下载源码编译安装到个人目录
如果某些库用--user参数安装失败(比如需要编译但pip处理不好),可以手动下载源码包编译安装:
步骤:
- 到对应库的官方仓库或PyPI页面下载对应版本的源码压缩包,上传到服务器的个人目录,或者直接用
wget下载:wget https://github.com/numpy/numpy/archive/refs/tags/v1.18.5.tar.gz # 举个适配Python3.5的numpy版本例子 - 解压源码包:
tar -zxvf v1.18.5.tar.gz cd numpy-1.18.5 - 编译并安装到个人目录:
或者指定自定义的安装目录(比如python3.5 setup.py install --user$HOME/my_python_libs):
这种情况需要把自定义目录加到python3.5 setup.py install --prefix=$HOME/my_python_libsPYTHONPATH里,参考方案一的环境变量设置。
方案三:创建个人虚拟环境(推荐用于环境隔离)
如果需要和系统Python环境完全隔离,或者要安装多个版本的依赖,可以用virtualenv创建自己的虚拟环境,同样不需要root权限:
步骤:
- 先安装
virtualenv到个人目录:pip3.5 install --user virtualenv - 在个人目录创建虚拟环境(指定用Python3.5):
virtualenv --python=python3.5 $HOME/my_keras_env - 激活虚拟环境:
激活后终端会显示source $HOME/my_keras_env/bin/activate(my_keras_env)前缀,此时你用的pip和python都是虚拟环境里的,直接安装依赖即可:pip install numpy theano keras - 退出虚拟环境:
deactivate
提示:如果虚拟环境激活后
pip版本太旧,可以先升级:pip install --upgrade pip
额外小技巧:用预编译wheel包跳过编译
如果源码编译遇到依赖缺失(比如服务器没有Fortran编译器,numpy编译失败),可以找对应Python版本和系统架构的预编译wheel包(.whl文件),然后用pip安装:
pip3.5 install --user path/to/numpy-1.18.5-cp35-cp35m-linux_x86_64.whl
你可以在PyPI上搜索对应库的wheel包,选择匹配你服务器系统和Python3.5的版本。
内容的提问来源于stack exchange,提问作者Batwoman05




