gpt4 book ai didi

python - 在执行 Python 的替代安装时安装 Distribute

转载 作者:太空狗 更新时间:2023-10-30 02:12:29 46 4
gpt4 key购买 nike

我正在 CentOS 5.8 上进行 Python 2.7.3 的替代安装,我想要分发,它提供 pip 和所有爵士乐。但是,我无法理解正确的过程,分发的安装脚本给我错误。

当前的命令顺序:(最终将是用于我的项目的设置脚本)

sudo yum groupinstall "Development tools"
sudo yum install {zlib,bzip2,openssl,ncurses}-devel

cd /tmp && mkdir python273 && cd python273
wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2
tar -xf Python-2.7.3.tar.bz2
cd Python-2.7.3

./configure --prefix=/usr/local --enable-shared
make
sudo make altinstall # installs to /usr/local/{bin,lib}

# Fix path to shared lib - http://stackoverflow.com/a/7880519/1076493
echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf > /dev/null
sudo ldconfig

# Distribute
wget http://python-distribute.org/distribute_setup.py
sudo python2.7 distribute_setup.py

# Done, install whatever interesting packages I want + clean up
sudo pip install virtualenv yolk bpython
rm -rf /tmp/python273

然而,当我尝试运行 distribute_setup.py 时,我得到了“权限被拒绝”,即使它是使用 sudo 运行的。在 root shell 中执行它时工作正常。我猜脚本不尊重最初在创建子进程或其他东西时使用的 UID。

这让我很奇怪;在使用 distribute 进行 Python (2.7.3) 的 altinstall 时,这是正确的顺序吗?或者仅仅是分发安装脚本不遵守给定的 UID?如果脚本有问题,我将如何使用 sudo 运行它,因为我不希望我的设置需要 root shell?

$ sudo python2.7 distribute_setup.py                            
Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.35.tar.gz
Extracting in /tmp/tmpE9UJke
Now working in /tmp/tmpE9UJke/distribute-0.6.35
Installing Distribute
Traceback (most recent call last):
File "distribute_setup.py", line 546, in <module>
sys.exit(main())
File "distribute_setup.py", line 543, in main
return _install(tarball, _build_install_args(options))
File "distribute_setup.py", line 87, in _install
if not _python_cmd('setup.py', 'install', *install_args):
File "distribute_setup.py", line 37, in _python_cmd
return subprocess.call(args) == 0
File "/usr/local/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/local/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/local/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 13] Permission denied

最佳答案

我在 RHEL5.8 上有一个非常相似的设置,当我执行时我得到相同的权限被拒绝异常:

$ sudo python2.7 distribute_setup.py

使用绝对路径解决问题:

$ sudo /usr/local/bin/python2.7 distribute_setup.py

根本问题只是根帐户的 PATH 中没有/usr/local/bin。


事实上 distribute_setup.py 试图通过重用当前的 python 解释器来调用 python 子命令 sys.executablesubprocess.call ,如果你一步一步地尝试:

$ sudo python2.7 -c "import sys; print sys.executable"

$ sudo /usr/local/bin/python2.7 -c "import sys; print sys.executable"
/usr/local/bin/python2.7

Permission denied 错误有点误导,但它是由尝试执行空文件名引起的:

$ python2.7 -c "import subprocess; subprocess.call([''])"
[...]
OSError: [Errno 13] Permission denied

关于python - 在执行 Python 的替代安装时安装 Distribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15311235/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com