在本机编好的脚本,因为本机和远程 VPS 的 python 环境不一样,想打包一份运行环境到远程的 VPS 上,试了下 virtualenv 好像只能本地隔离,在 VPS 上解压后 python 版本没有变化。
virtualenv 不能处理这个事情吗?或者有其它的替代方案?
本机系统:mac os
本机 python 版本:3.5.1
VPS python 版本:2.7.5
VPS 系统:CENTOS
我的操作是这样的
virtualenv --no-site-packages venv
...
source venv/bin/activate
|  |      1sunwei0325      2017-08-29 11:03:15 +08:00  1 本地: pip freeze > requirements.txt 服务器 virtualenv + source 进入新环境后 | 
|  |      2sunwei0325      2017-08-29 11:03:55 +08:00 pip install -r requirements.txt 不好意思, 按到 cmd + enter 了, 发了两条 | 
|      3mlyy      2017-08-29 11:04:07 +08:00 docker.Or 自己编译 python | 
|  |      4sunwei0325      2017-08-29 11:04:46 +08:00 服务器得手动编译 python3 源码装个 python3 | 
|  |      5shuizhengqi      2017-08-29 11:06:04 +08:00 你有听说过 docker 吗 | 
|      6nullcoder      2017-08-29 11:07:24 +08:00  1 LZ 这种情况应该还是用 Docker 比较好 | 
|  |      7qsnow6 OP | 
|  |      8mckelvin      2017-08-29 11:12:39 +08:00  2 推荐用  https://github.com/jazzband/pip-tools 以固化版本号的方式管理 python 依赖,pip freeze 会带来一堆没必要的依赖。之后你在远程的虚拟机上初始化 virtualenv 安装 requirements.txt 定义好的依赖。virtuelenv 只能提供 python module 层次上的隔离,如果你追求操作系统(内核层以上)的隔离,可以用 docker. 一般情况下建议用 pip-tools 固化版本号,同时在 Dockerfile 中定义如何安装系统包以及 python module, 这样远程虚拟机只要构建出 docker image 就可以直接跑了。 | 
|      9Neveroldmilk      2017-08-29 11:16:15 +08:00  1 docker 现在的商业化运营策略有问题,再说了碰上 docker 内部的不兼容问题只能干瞪眼。所以还是兼容自己配置原生环境的好。 | 
|      10nullcoder      2017-08-29 11:16:46 +08:00 | 
|  |      11GavinHsueh      2017-08-29 15:23:36 +08:00 docker | 
|  |      12wencan      2017-08-29 15:55:31 +08:00 少打包 其它机器很可能运行环境不同 docker 之类另说 | 
|  |      13bitsjx      2017-08-29 16:03:50 +08:00 如果 VPS 的 python 版本可以升级的话,可以考虑在本机上编译安装目标机上相同版本的 python,然后安装所有需要的 python 包,把所有的软件包打包成.whl 格式,到目标机器上直接 pip install 安装。 | 
|      14praynise      2017-08-29 17:35:40 +08:00 我之前也问过相同的问题…目前个人感觉是这样,如果能上 docker 的话最好上 docker。我这边比较特殊,生产环境不让上 docker,我的做法比较取巧,是在生产上和开发上安装相同的 gcc 版本和 python 版本,开发环境使用 virtualenv,开发好了直接把整个 virtualenv 打包,放在生产环境上相同的目录结构下(一定要是相同的目录结构,不然 source activate 后配置会出问题)然后就可以直接跑了… 我的开发环境是 centos,生产环境是 redhat,目前运行没有问题… | 
|      15MrgHOST      2017-08-29 19:02:27 +08:00 mark | 
|  |      16timothyye      2017-08-29 21:18:57 +08:00 via Android 你需要 docker | 
|  |      17rogwan      2017-08-29 22:27:45 +08:00 via Android 理论上讲,先创建一个纯 Python 的 env 环境,然后 copy site-packags 文件夹,就可以。win 和 Linux 之间迁移都成功过,也有莫名的失效过😂 | 
|  |      18msg7086      2017-08-30 01:03:34 +08:00 Python 是很多 Linux 发行版的核心组件。装的时候千万要小心,别把系统搞炸了。 | 
|      19shiroming      2017-08-30 02:50:57 +08:00 via Android pyenv  别去自己搞替换系统 Python | 
|      21asdf123101      2017-08-30 03:34:23 +08:00 via Android 用 docker 打包。简单方便。 | 
|      22SharkIng      2017-08-30 03:43:50 +08:00 via iPhone 我都是直接 tar virtualenv | 
|  |      23litter123      2017-08-30 10:21:49 +08:00 直接编译安装,我的 VPS 上装了 2.6、2.7、3.6.1 三个版本,改名字区分,没什么问题啊 | 
|      24oldbird      2017-09-07 07:53:54 +08:00 via Android winpython,可否? |