安装没有root的Python 2.7

时间:2011-04-28 20:00:32

标签: python linux

我尝试在远程linux机器上安装没有root的Python 2.7。我运行了命令

./configure prefix=/  
make install DESTDIR=/xxx/yyy/ 

其中/ xxx / yyy /是我具有读写访问权限的目录。

我最后遇到了一个问题。它说:

  

使用gdbm INFO构建dbm:不能   找到Tcl / Tk库和/或标题

     

Python构建完成了,但是   必要的位来构建这些模块   没找到:   _tkinter bsddb185 dl imageop sunaudiodev To   找到必要的位,看看   在detect_modules()中的setup.py   模块的名称。

     

运行build_scripts   install_lib创建/lib/python2.7   错误:无法创建   '/lib/python2.7':权限被拒绝

在没有root访问权限的情况下,我是否采取了正确的安装步骤? (即我的configure和make命令?)任何人都可以告诉我为什么它不能正确安装?

谢谢,
KTM

5 个答案:

答案 0 :(得分:14)

我只是在没有管理员权限的情况下安装python2.7.5。我认为命令应该是:

./configure prefix=/xxx/yyy
make install

然后你应该在.bashrc中添加路径/ xxx / yyy / bin为:

PYTHONPATH=/home/songmeixu/python/bin
export PATH=$PYTHONPATH:$PATH

答案 1 :(得分:9)

你应该有前缀= / xxx / yyy。使用prefix = /,它会尝试将库安装到/lib/python2.7,而不是/xxx/yyy/lib/python2.7。

答案 2 :(得分:4)

不要编译,获取pre-built binary from ActiveState

答案 3 :(得分:0)

我建议让linuxbrew为您完成构建,而不是手动构建源代码。 DigitalOcean在安装linuxbrew时有一个很好的tutorial。一旦完成,你可以说brew install python并有一个管理良好的python安装,包括pip。

答案 4 :(得分:0)

我编写了一个脚本,将Python 2(缺少Python 3为用户安装提供的便利功能)和Pip 2安装到用户目录中,以便标准用户可以对其模块进行管理员等。

#!/bin/bash
VERSION="2.7.11"
BUILDDIR=~/"build/python"
INSTALLDIR=~/"python/Python-$VERSION"

mkdir -p ${BUILDDIR}
cd ${BUILDDIR}
if [ ! -f $BUILDDIR/Python-$VERSION.tgz ]
then
wget https://www.python.org/ftp/python/$VERSION/Python-$VERSION.tgz
tar zxfv Python-$VERSION.tgz
fi
find $BUILDDIR -type d | xargs chmod 0755
cd Python-$VERSION


mkdir -p ${INSTALLDIR}
./configure --prefix=${INSTALLDIR}
make && make install

# Append to user PATH or create symbolic link to .local/bin
# [[ ":$PATH:" != *":$HOME/python/Python-$VERSION/bin:"* ]] && printf "export PATH=$HOME/python/Python-$VERSION/bin:$PATH\n" >> ~/.bashrc
if [ ! -d ~/.local/bin ]; then mkdir -p ~/.local/bin; fi
ln -s ~/python/Python-"$VERSION"/bin/python ~/.local/bin/

source ~/.bashrc

# Install local pip
cd ..
wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py -O - | python - --user
[[ ":$PATH:" != *":$HOME/.local/bin:"* ]] && printf "export PATH=$HOME/.local/bin:$PATH\n" >> ~/.bashrc

# Install modules like this:
# pip install --target="$HOME/.local/lib/python$VERSION/site-packages"

# Add those modules to PYTHONPATH
[[ ":$PYTHONPATH:" != *":$HOME/.local/lib/python$VERSION/site-packages:"* ]] && printf "export PYTHONPATH=$HOME/.local/lib/python$VERSION/site-packages:$PYTHONPATH\n" >> ~/.bashrc

source ~/.bashrc

注意:该脚本被公认为是它将在PATH ENV变量的~/.bashrc后面附加几行。如果不需要这样做,只需在脚本中注释相关行。


案例:用于Avahi的Airprint服务文件的服务文件生成器不支持Python3。为了保持系统的清洁,我只安装了Python 2的本地版本并运行airprint-generate.py,然后运行删除整个安装(在小型Raspberry Pi Zero W上节省空间)。