以非root身份安装Python的Module或者Package以及pip安装指定路径

本文介绍了在没有sudo权限的情况下如何安装Python包。通过使用pip和easy_install工具,并指定--user选项或自定义前缀路径,可以将包安装在用户的本地目录中。此外,文章还强调了更新PYTHONPATH环境变量的重要性。

因为要远程访问公司的服务器,没有sudo的权限,所以在安装python的一些包的时候就不能安去默认路径了(比如以/usr/local/lib/为prefix的路径)。

一般来讲用easy_install或者pip来安装的时候都默认在PATHONPATH的site-packages下面,比如/usr/lib64/python2.7/site-packages。

  1. 用pip
    pip install --user package_name

  2. 用easy_install
    easy_install --prefix=$HOME/local package_name

    这样就会安装到$HOME/local/lib/pythonX.Y/site-packages中去。

    别忘了这个路径一定要加到环境变量PYTHONPATH中,不然之后import模块的时候是找不到它的。

  3. pip指定路径:

    sudo pip install six --upgrade --target="/usr/lib/python2.7/dist-packages"

    我在安装tensorflow时发现sys.path会先找/usr/lib/python2.7/dist-packages,但是pip默认安装在/usr/local/...下面,所以指定target是必要的,否则可能即使upgrade了在python执行时找的库依然时没升级的。



作者:麦兜胖胖次
链接:http://www.jianshu.com/p/92a109ddf695
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
<think>好的,用户现在问的是如何在公共服务器上指定安装路径。之前用户遇到了/tmp空间不足和安装包损坏的问题,现在他们可能在进行安装时遇到了路径相关的困难。我需要先理解用户的具体需求。公共服务器通常由多个用户共享,可能没有root权限,所以用户可能需要将软件安装到自己的家目录或者其他有写入权限的目录下,而不是默认的系统路径用户可能的情况是,他们无法在默认的安装目录(如/usr/local或/opt)下安装软件,因为没有权限,或者公共服务器的管理员限制了这些目录的使用。因此,他们需要指定一个自定义的安装路径,比如自己的home目录下的某个子目录,如~/apps或~/local。 接下来,我需要考虑不同的安装方式如何指定路径。常见的安装方式包括源码编译安装(使用configure、make、make install)、使用包管理器如conda、pip或者二进制包安装。每种方法都有不同的指定路径的方式。 源码编译安装通常通过--prefix参数指定,例如./configure --prefix=$HOME/apps。这会将软件安装指定目录下的bin、lib等子目录中。需要提醒用户设置环境变量,如PATH和LD_LIBRARY_PATH,以便系统能找到安装的软件。 对于Pythonpip安装,可以使用--target参数指定路径,但需要注意可能需要设置PYTHONPATH环境变量。而Conda则允许创建虚拟环境并指定路径,这样用户可以在自己的目录下管理依赖。 二进制包安装可能需要解压到指定目录,并手动配置环境变量。此外,用户可能需要修改安装脚本,将默认路径替换为自定义路径,但需要小心脚本中的权限检查。 另外,用户可能关心如何在公共服务器上避免影响其他用户或者如何管理自己的多个软件版本。可能还需要考虑模块化管理工具,如Environment Modules或Lmod,来方便地切换不同环境。 需要提醒用户注意事项,比如环境变量的持久化(写入.bashrc或.bash_profile),以及权限问题,避免使用需要root权限的安装方法。同时,公共服务器可能有磁盘配额限制,用户需要确保目标路径有足够的空间。 总结回答的结构,应该分步骤说明不同安装方法的路径指定方式,并给出具体示例,同时提醒环境变量设置和管理建议。确保用户能够根据他们的具体安装方式找到合适的解决方案,并理解后续配置的必要性。</think>在公共服务器上指定自定义安装路径是避免权限冲突、管理个人软件环境的常用方法。以下是分场景的详细操作指南: --- ### **一、核心逻辑:绕过系统目录权限限制** 公共服务器通常禁止普通用户写入 `/usr`、`/opt` 等系统目录,需将软件安装到**个人有写入权限的路径**(如 `$HOME/apps`)。 --- ### **二、不同安装方式的路径指定方法** #### **1. 源码编译安装(C/C++类软件)** **步骤:** 1. 创建个人安装目录: ```bash mkdir -p $HOME/apps/software_name # 示例路径 ``` 2. 配置时指定 `--prefix` 参数: ```bash ./configure --prefix=$HOME/apps/software_name make make install ``` 3. 设置环境变量(临时生效): ```bash export PATH="$HOME/apps/software_name/bin:$PATH" export LD_LIBRARY_PATH="$HOME/apps/software_name/lib:$LD_LIBRARY_PATH" ``` 4. **永久生效**:将上述 `export` 命令添加到 `~/.bashrc` 或 `~/.bash_profile`。 --- #### **2. Python安装pip)** - **指定安装路径**: ```bash pip install --target=$HOME/apps/python_packages package_name ``` - **设置Python环境变量**: ```bash export PYTHONPATH="$HOME/apps/python_packages:$PYTHONPATH" ``` --- #### **3. Conda虚拟环境** 1. **指定虚拟环境路径**: ```bash conda create --prefix $HOME/apps/conda_envs/my_env python=3.9 ``` 2. **激活环境**: ```bash conda activate $HOME/apps/conda_envs/my_env ``` --- #### **4. 二进制包直接安装** 若软件提供二进制文件(如 `.tar.gz`、`.sh`): 1. 解压到自定义目录: ```bash tar -xzvf package.tar.gz -C $HOME/apps/ ``` 2. 手动配置环境变量: ```bash export PATH="$HOME/apps/package/bin:$PATH" ``` --- #### **5. 修改安装脚本中的路径** 若安装脚本强制使用默认路径(如 `/opt`): 1. 解压安装包后,搜索脚本中的路径关键词: ```bash grep -rnw './' -e '/opt' # 查找所有包含"/opt"的文件 ``` 2. 用 `sed` 批量替换路径(谨慎操作): ```bash sed -i 's/\/opt/\/home\/yourname\/apps/g' install.sh ``` --- ### **三、高级管理技巧** #### **1. 模块化管理(Environment Modules/Lmod)** - 安装 `Environment Modules` 工具: ```bash # CentOS sudo yum install environment-modules # Ubuntu sudo apt install environment-modules ``` - 创建自定义模块文件(示例路径 `$HOME/modulefiles/myapp`): ```tcl #%Module1.0 prepend-path PATH /home/yourname/apps/myapp/bin prepend-path LD_LIBRARY_PATH /home/yourname/apps/myapp/lib ``` - 加载模块: ```bash module use $HOME/modulefiles # 添加模块搜索路径 module load myapp ``` --- #### **2. 容器化部署(Docker/Singularity)** - **Docker**(需管理员授权): ```bash docker run -v $HOME/apps:/mnt -it ubuntu /bin/bash ``` - **Singularity**(适合无root权限的服务器): ```bash singularity build $HOME/apps/my_container.sif docker://ubuntu ``` --- ### **四、注意事项** 1. **权限问题**: - 避免使用 `sudo` 强制安装到系统目录。 - 若安装脚本要求 `root` 权限,需联系服务器管理员。 2. **依赖库冲突**: - 若软件依赖系统库,可使用 `LD_LIBRARY_PATH` 优先链接个人目录中的库: ```bash export LD_LIBRARY_PATH="$HOME/apps/openssl/lib:$LD_LIBRARY_PATH" ``` 3. **磁盘配额**: - 公共服务器可能限制用户目录空间,安装前检查配额: ```bash quota -s # 或 df -h $HOME ``` --- ### **五、典型场景示例** #### **安装FFmpeg到个人目录** 1. 下载源码并编译: ```bash git clone https://git.ffmpeg.org/ffmpeg.git cd ffmpeg ./configure --prefix=$HOME/apps/ffmpeg --enable-shared make -j8 && make install ``` 2. 配置环境变量: ```bash echo 'export PATH="$HOME/apps/ffmpeg/bin:$PATH"' >> ~/.bashrc echo 'export LD_LIBRARY_PATH="$HOME/apps/ffmpeg/lib:$LD_LIBRARY_PATH"' >> ~/.bashrc source ~/.bashrc ``` --- 通过以上方法,您可以在不依赖系统管理员的情况下,灵活管理公共服务器上的个人软件环境。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值