安全性和可用性是反比关系
通过这篇文章,你会学到:
- 如何通过非root用户安装python
- 如何通过非root用户安装pip
- 如何在无互联网的条件下安装python的包
- 验证安装成功
1. 如何通过非root用户安装python
- 下载源码之后,先进行shasum校验通过。
- 解压缩,并执行
./configure prefix=/home/username/python make install
- 然后把路径加到.*rc文件中
PYTHONPATH=/home/username/python/bin export PATH=$PYTHONPATH:$PATH
- source .*rc重启,并且通过
which python
验证是否成功。
2. 如何通过非root用户安装pip
TL;DR
- 把pip的wheel文件下载下来。
- 执行
python pip-9.0.1-py2.py3-none-any.whl/pip install --no-index pip-9.0.1-py2.py3-none-any.whl
Long Version
这个链接中的pfmoore写的答案,注意他提到上面写的这个安装方法没有提供任何warranty。
3. 如何在无互联网的条件下安装python的包
3.1 找到依赖包
应该找一台有互联网的机器,把目前安装paramiko(某个包)所需要的依赖给写下来。通过以下语句:
pip2 download paramiko -d /tmp --no-binary :all:
可以得到以下stdout,然后注意系统提示Successfully downloaded paramiko bcrypt cryptography pynacl pyasn1 cffi six idna asn1crypto enum34 ipaddress pycparser,就是我们需要的包。
Collecting paramiko
File was already downloaded /private/tmp/paramiko-2.4.0.tar.gz
Collecting bcrypt>=3.1.3 (from paramiko)
File was already downloaded /private/tmp/bcrypt-3.1.4.tar.gz
Collecting six>=1.4.1 (from bcrypt>=3.1.3->paramiko)
Downloading six-1.11.0.tar.gz
Saved /private/tmp/six-1.11.0.tar.gz
......
Collecting idna>=2.1 (from cryptography>=1.5->paramiko)
Downloading idna-2.6.tar.gz (135kB)
100% |████████████████████████████████| 143kB 172kB/s
Saved /private/tmp/idna-2.6.tar.gz
......
Collecting ipaddress (from cryptography>=1.5->paramiko)
Downloading ipaddress-1.0.18.tar.gz
Saved /private/tmp/ipaddress-1.0.18.tar.gz
Collecting pycparser (from cffi>=1.1->bcrypt>=3.1.3->paramiko)
Downloading pycparser-2.18.tar.gz (245kB)
100% |████████████████████████████████| 256kB 122kB/s
Saved /private/tmp/pycparser-2.18.tar.gz
Successfully downloaded paramiko bcrypt cryptography pynacl pyasn1 cffi six idna asn1crypto enum34 ipaddress pycparser
也可以写成一个shell脚本来下载+列出依赖包
#!/bin/sh
# get_pypi_dependencies.sh
PACKAGE=$1
pip download $PACKAGE -d /tmp --no-binary :all: \
| grep Collecting \
| cut -d' ' -f2 \
| grep -v $PACKAGE
执行./get_pypi_dependencies.sh bcrypto
,得到:
cffi>=1.1
six>=1.4.1
pycparser
3.2 把这些包的wheel文件下载下来
建议在官网上下载。
- 平台版本要选对,windows就选择windows的,linux就是linux的。另外32位和64位要选对。
- python2还是python3要选对
- 版本要满足最小依赖
- cpython和jpython的选择。一般都选择cpython,在安装包上会写成cp27, cp34, cp35, cp36
- UCS-2和UCS-4的选择。对于linux版本,可以看到有一个是cp27m版本,一个是cp27mu版本,分别代表了UCS-2和UCS-4.
将这些包用SFTP、跳板机等方式传递到离线的服务器上。
然后按照3.1中相反的顺序,通过以下方法安装:
pip install [*.whl]
4. 验证安装成功
执行python,并且import对应的包