客户环境不能上网,开始想把所有依赖包下载下来,进入客户环境进行安装。但为了避免出差,部署工作交给其他同事了,我想还是需要更简单的方式。

实验了一下virtualenv是可以的

1. 创建一个新的环境(改为virtualenv --no-site-packages ENV,不复制全局的包进来)

新环境在目录ENV中

2. 进入到新环境

3. 安装程序及其依赖包

把我们的程序考到pub3目录下

并执行pip install -r requirements.txt安装所有的依赖包

4. 让ENV这个目录可以改变位置

Make an EXISTING virtualenv environment relocatable.

This fixes up scripts and makes all .pth files,
relative  (改成相对路径)

这一步是必要的,如果不做,必须保证新的环境上ENV所在的路径与打包机完全一致。因为,像pip这样的工具内会有绝对路径,如python解析器地址。

如果执行了relocatable就可以至于任意目录了

 

5. 修改ENV/bin/activate中存在的绝对路径

改为

6. 压缩pub3目录发布

-----------------------------------------------

在客户环境部署

7.  解压并进入pub3

8. 进入python虚拟环境

cd xxx/xxx/ENV

source  bin/activate

若第5步改成了pwd的话,一定要进入ENV目录后,执行source  bin/active。否则无法正确进入虚拟环境

执行完后,测试一下虚拟环境,看是否引用的是虚拟环境中的python/pip等

which python

which pip

9. 运行程序就可以了

使用virtualenv发布Python程序的更多相关文章

  1. 利用setuptools发布Python程序到PyPI,为Python添砖加瓦

    pip install的东西从哪里来的? 从PyPI (Python Package Index)来的,官网是:  https://pypi.python.org/pypi/执行pip install ...

  2. 使用pycharm发布python程序到ubuntu中运行

    前提条件: 1.ubuntu安装了vsftpd,可以参考:https://www.cnblogs.com/xienb/p/9322805.html 2.安装专业版pycharm 步骤: 1.新建一个P ...

  3. 第一章 Python程序语言简介

    第一节 Python概述 1. 什么是Python Python是一种 解释型.面向对象.动态数据类型 的高级程序设计语言.由Guido van Rossum与1989年发明,第一个公开发行版本发行于 ...

  4. jenkins结合supervisor进行python程序发布后的自动重启

    jenkins结合supervisor进行python程序发布后的自动重启 项目背景: 通过jenkins发布kvaccount.chinasoft.com站点的python服务端程序,业务部门同事需 ...

  5. Sublime Text3 以及 SublimeREPL使用Virtualenv执行python

    1. SublimeText3 安装Virtualenv插件(Crtl+Shift+P) 2. 新建python虚拟环境: Crtl+Shift+P,选中Virtualenv:New选项,在底部Vir ...

  6. 改善python程序的建议[转]

    <编写高质量代码 改善Python程序的91个建议> <编写高质量代码 改善Python程序的91个建议>读后程序学习小结 - BigDeng_2014的专栏 - CSDN博客 ...

  7. 第一个 Python 程序

    ## 目标 * 第一个 `HelloPython` 程序* `Python 2.x` 与 `3​​.x` 版本简介* 执行 `Python` 程序的三种方式 * 解释器 —— `python` / ` ...

  8. 发布python包

    写python程序时常常要导入各种包,使用其中的模块或功能.我们如果有可以复用的功能或模块也可以发布成包,并安装在自己或他人电脑上,以供自己或别人使用.python发布包的步骤如下: 一.首先为模块创 ...

  9. 想拥有自己的Python程序包,你只需15步

    来源商业新知网,原标题:15步,你就能拥有自己的Python程序包 全文共 3192 字,预计学习时长 6 分钟 每个软件开发员和数据科学家都难免要做程序包.本文推荐一篇 Python开源程序包的制作 ...

随机推荐

  1. wpf tabcontrol内的datagrid的selectionChanged事件向往传递问题

    tabcontrol 内的一个tabitem里是datagrid 当程序相应datagrid的selectionchanged事件后会向上传递到tabcontrol的selectionchanged事 ...

  2. java----int,string 转化为long

    String: 1.返回Long包装类型: String str = "aaa"; long l = Long.parseLong([str]); 2.返回long基本数据类型: ...

  3. C中空指针、NULL与0

    空指针是指确保可以没有指向任何一个对象的指针.空指针常量值通常使用宏定义NULL来表示. 空指针和任何非空指针比较都不相等,因此经常作为函数异常时的返回值使用. 链表也经常在数据末尾放一个空指针提示后 ...

  4. delphi实现圆角窗体[转]

    procedure TForm1.FormCreate(Sender: TObject); var hr :thandle; begin hr:=createroundrectrgn(1,1,widt ...

  5. Intervals POJ - 3680

    传送门 给定数轴上n个带权区间$[l_i,r_i]$,权值为$w_i$ 选出一些区间使权值和最大,且每个点被覆盖次数不超过k次. 离散+拆点,最大费用可行流(跑到费用为负为止) 第一部分点按下标串起来 ...

  6. Scala 学习2

    去map里面的数据 scala> val map = Map("a"->1, "b"->2, "c"->3) map ...

  7. kerberos协议介绍

    一.kerberos认证过程: client向kerberos服务请求,希望获取访问server的权限.kerberos得到了这个消息,首先得判断client是否是可信赖的,也就是白名单黑名单的说法. ...

  8. FCC知识点总结

    1.DOMContentLoaded事件 2.延迟脚本 defer 3.异步脚本async 4.[找最长单词]—— 找出句子中最长的单词,并返回它的长度. 5.数组slice().splice() s ...

  9. 使用Echarts的步骤

    Echarts官网地址:https://echarts.baidu.com/index.html 步骤如下: 1.获取Echarts (1)可以在Echarts官网去下载,选择需要的版本下载,根据开发 ...

  10. Android开发 如何最优的在Activity里释放资源

    前言 当前你已经入门Android开发,开始关注深入的问题,你就会碰到一个Android开发阶段经常碰到的问题,那就是内存泄漏. 其实大多数Android的内存泄漏都是因为activity里的资源释放 ...