![如何在没有root权限的CentOS上安装Python?](https://linux22.com/image/76281/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89root%E6%9D%83%E9%99%90%E7%9A%84CentOS%E4%B8%8A%E5%AE%89%E8%A3%85Python%EF%BC%9F.png)
由于某些原因,我需要在没有 root 权限的情况下在 CentOS 上安装 Python。由于没有root,无法使用yum
安装包,所以我尝试了
./configure --prefix=$HOME/tools/python
make
make install
它确实起作用了。但是,当我尝试为其安装 setuptools 时,通过
wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py -O - | python - --user --insecure
Python 抱怨说
urllib2.URLError: <urlopen error unknown url type: https>
看来 Python 与 openssl lib 的编译不好。所以我从它的网站下载了setuptools,取消存档,然后运行
python setup.py install
并得到了
RuntimeError: Compression requires the (missing) zlib module
因此,需要重新编译并重新安装Python。这次,在配置 Python 之前,我通过添加 手动安装了 zlib、openssl 和 libffi,--prefix="$HOME/tools/foo"
因为我没有写入/usr/foo/bar
.
之后,我尝试使用标志配置 Python,例如--with-zlib=$HOME/tools/zlib
.再次不幸的是,Python 在屏幕上显示了一行,表示这些标志是未知的。然后我尝试修改/Modules/Setup.dist
,期望可以通过取消注释以下行来指定这些库的路径:
#SSL=/home/foo/tools/openssl-1.0.0s
#_ssl _ssl.c \
# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
# -L$(SSL)/lib -lssl -lcrypto
......
#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
这一次,事情变得更糟,编译停止了
./Modules/zlibmodule.c:8:18: error: zlib.h: No such file or directory
我搜索了整个网络,但一无所获。因此,我来到这里提出一个问题:如何在没有 root 权限的 CentOS 上安装带有 zlib、openssl 和 libffi 等的 Python?
答案1
您可以从主目录运行 Python + 工具。
去https://www.continuum.io/downloads获取 Anaconda,它包含此处列出的所有这些软件包:
http://docs.continuum.io/anaconda/pkg-docs包括 libFFI、openssl 和 zlib。
安装后,重新启动终端和 wallah。 ($PATH 会为您而更改,并且只为您更改,因此您的系统软件不受影响,并且无需向管理员发送电子邮件。)
如果您需要此处未列出的其他软件包,您可以使用 conda、pip 或 setup.py 来获取更多软件包。
继续前进,变得很棒。
答案2
解决此问题的一种方法是安装pyenv然后用它来安装你想要的Python版本。为我工作!
答案3
您是否有权访问 /etc/sudoers 或者您可以告诉您的管理员为您添加此内容吗?您可能想添加到此文件中,
username ALL = NOPASSWD : /usr/bin/apt-get , /usr/bin/aptitude, /usr/bin/whatever
这样您就不需要 sudo 来访问文件了。
答案4
您可以使用独立构建https://github.com/indygreg/python-build-standalone。
使用步骤:
unzstd <cpython file name>.zstd
tar -xvf <cpython file name>.tar
./python/install/bin/python3