许多时候,服务器处于内网环境中,下载依赖没办法直接pip install xxx,如果一个个下载再解压再拷贝到内网服务器安装也太麻烦,下面讲两种方法
一.pip批量下载安装
参考文章:https://www.cnblogs.com/flowertester/p/11355484.html
1.制作requirements.txt文件
将当前python环境依赖记录到依赖文件(如果是虚环境请先进入虚环境)
a.进入虚环境
我在:/nurxat/penv下有三个虚环境,现在以python2的虚环境penv2做示范
激活虚环境:
source penv2/bin/activate
b.记录依赖
pip freeze >requirements.txt
2.根据依赖文件下载依赖包(在有网的电脑)
a.创建目录,用于保存依赖,进入该目录,把requirements.txt放到该目录:
mkdir packages
cd packages
#为了方便我把依赖文件移动到该目录下
mv ../requirements.txt ./
b.执行下载命令
pip download -r requirements.tx
已经下载好了
3.安装
将下载依赖的packages(包含依赖文件requirements.txt)拷贝到要安装的电脑
a.进入要安装的虚环境:
source penv4/bin/activate
b.执行安装命令:
pip install --no-index --find-links=/nurxat/penv/packages -r /nurxat/penv/packages/requirements.txt
–find-links为依赖位置
-r后为依赖文件位置
c.可以看到安装完成
二.制作egg文件安装
参考文章:https://www.cnblogs.com/kungfupanda/p/3343113.html
将pip安装好的依赖制作成.egg文件,使用setuptools自带的easy_install.py安装
1.制作egg文件(该示例也以penv2和penv4演示,penv4依赖已全部卸载)
a.切换到penv2的site-packages下
cd /nurxat/penv/penv2/lib/python2.7/site-packages
b.在需要制作egg文件夹的同级目录创建setup.py文件(以flask为例)
touch setup.py
写入如下内容:
name必须为要制作的文件名字
version应尽量和依赖本来版本保持一致,避免混乱
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from setuptools import setup, find_packages
setup(
name = "flask",
version="0.1.0",
packages = find_packages(),
zip_safe = False,
description = "为flask制作egg文件",
long_description = "为flask制作egg文件",
author = "lzk",
author_email = "nyyxlg@outlook.com",
license = "GPL",
keywords = ("test", "egg"),
platforms = "Independant",
url = "",
)
c.执行命令:
python setup.py bdist_egg
执行成功,dist目录就是egg文件生成位置
d.将flask-0.1-py2.7.egg拷贝到其他需要安装的环境的site-packages下
cp flask-0.1-py2.7.egg /nurxat/penv/penv4/lib/python2.7/site-packages/
source /nurxat/penv/penv4/bin/activate
cd /nurxat/penv/penv4/lib/python2.7/site-packages
e.执行安装
easy_install flask-0.1-py2.7.egg
可见安装成功
ps:截图可看到 Version为 0.1
1.其实在配置setup.py文件时version应该尽量和flask本来的版本保持一致,避免混乱
2.name为要打包的文件夹或文件的名字,不可随便起
f.卸载
egg安装的依赖和pip安装的依赖在site-packages目录下的文件结构不一样,但是egg安装的依赖也可以使用pip uninstall来卸载,因为安装egg的easy_install.py是基于python的distutils来实现的,所以它遵守distutils的规范
pip uninstall flask
关于egg更多细节请参考:https://www.cnblogs.com/kungfupanda/p/3343113.html
关于easy_install请参考:https://www.jianshu.com/p/c61cdd2b9e35
easy_install是setuptools自带工具,而安装虚环境会自动安装setuptools