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