1 准备阶段
为了模拟真实的环境,我用docker从官方仓库pull下来了一个centos系统,然后安装了python3.6.0。
1.1 创建容器
- 利用
docker images
查看所有的镜像; - 根据镜像的名字,如centos,创建容器,注意容器要有交互的shell,因此命令为:
docker run -it centos '/bin/bash'
; - 利用
docker ps -a
查看所有的容器,利用docker rename <container-id> test
将容器重命名为test; - 可以从本地传输文件到容器中;
- 利用
docker start -i test
启动容器。
1.2 安装python
虽然介绍的是在断网情况下安装python,但是系统中仍然需要一些必须的命令,总结了一下,包括:
gcc
、make
、zlib*
。一般这些命令服务器都会预装,如果实在没有,那就只能网络上下好考进去手动安装了,这不是本文的重点,因此,针对此类问题以下给出的都是有网条件下的解决方案。
解压从官网下载的压缩包,进入解压后的文件夹:
- 指定python3的安装位置(注意:文件夹必须事先创建;系统必须要有GCC环境,如果没有,运行
yum install gcc
进行安装),运行以下命令:
./configure --prefix=/usr/path/to/python3
- 然后运行
make && make install
(没有make
命令就用yum install make
安装;提示缺少zlib
的解压缩类库,运行yum install zlib*
安装即可)。 - 第三步,创建一个软链接,目的是从任何位置都可以启动python3(需要注意的是,linux系统的正常运行需要python2,因此不能把系统自带的python2删除,为区分两者,将新装的python指定为
python3
),运行以下命令:
ln -s /usr/path/to/python3/bin/python3 /usr/bin/python3
- 【这一步还不确定需不需要,执行上述三步后就可以用
python3
打开python3的控制台了】最后一步,修改~/.bashrc
文件,在最后添加如下代码:
PATH=$PATH:$HOME/bin:/path/to/python3/bin
export PATH
- 保存退出,然后
source ~/.bashrc
使之生效。
这时,输入python3
就会进入python3.6.0的环境。
2 实施阶段
2.1 创建虚拟环境
为了各项目的独立,需要创建虚拟环境。命令如下:
python3 -m venv /path/to/new/virtual/environment
激活虚拟环境:
source /path/to/new/virtual/environment/bin/activate
关闭虚拟环境:
deactivate
2.2 安装依赖包
- 在虚拟环境开启的情况下,利用
pip install <pkgs>
安装项目所需的依赖包; - 执行
pip freeze > requirements.txt
将包的信息写入requirements.txt文件中;
2.3 迁移至无网状态下安装依赖包
- 利用
pip download --destination-directory DIR -r requirements.txt
将所需依赖包下载至DIR目录下; - 将
requirements.txt
和DIR
都利用docker cp
命令导出,然后复制到目标服务器上,注意目标服务器的python版本需要与容器中的版本一致; - 执行
pip install --no-index --find-links=DIR -r requirements.txt
,即可实现从本地安装依赖环境。