Python 项目移植到其他机器,要求全 Linux 系统适配

2019-04-29 23:31:49 +08:00
 akmonde

RT,领导要求移植某个项目,要求移植到不同的 linux 机器上都能适配。 领导的意思是,python 本来全平台通用,完全能打包到内网无人值守安装,完全无错完成。 我这边本来想的是,用 virtualenv 直接打包,但是发现几个坑,打包好的很多文件里,有些是直接引用的系统软 link:

/home/lab/venv/local/bin

引用的是:

lrwxrwxrwx 1 lab lab   18 Apr 29 07:53 bin -> /home/lab/venv/bin

换到新环境下,要是不存在改文件,或者环境不同换了位置,该如何处理。 领导应该会要求,不能固定在某一个目录,这个我不知道怎么弄。

另外,在安装库文件的过程中,领导要求把库文件弄下来,不能即时下载纠错。 我在安装某一些库文件的过程中,比如:

pip install lxml 
pip install gevent

可能会出现部分报错,其实人工纠正还是不难,但是现在要求全部弄下来打包的话, 如何才能做到完全适配,比如缺啥底层文件,都加到这个文件夹里,做好链接,直接能用,适配全系统 linux。 领导还加了句,实在不行还可以判断下系统内核版本和系统版本再进行加载。

另外,领导附加了要求,不能用镜像虚拟机 docker 之类的。

很僵硬,我这边实在绝望,希望各位大佬能指点下。 在线等,很急,领导催的紧! 感谢!

7137 次点击
所在节点    Python
48 条回复
zjsxwc
2019-04-30 08:00:56 +08:00
我记得 docker 没有对老 Linux 比如 centos6 支持吧,不符合楼主要求的。
zjsxwc
2019-04-30 08:04:43 +08:00
楼上都说了用禁用 cgo 的 go 写是满足楼主需求的唯一途径了
izoabr
2019-04-30 08:22:43 +08:00
你直接把依赖都打包进去不就得了,甚至 python 运行时都打包进去,赶上这样的领导该粗暴就粗暴。
mengzhuo
2019-04-30 08:25:46 +08:00
你们还 too young
Armv8 i386 mips armv5 怎么办?
Windows FreeBSD NetBSD Darwin 呢?
还敢叫全平台么?
ik
2019-04-30 08:30:44 +08:00
我也投票 docker
cat9life
2019-04-30 08:36:42 +08:00
这个要求简直就是给 docker 量身订做的 结果还不让用
CallMeReznov
2019-04-30 08:38:47 +08:00
领导指着哆啦 A 梦的四维空间袋说道"这口袋挺可爱,你也给我整一个呗"
"我整你妈!"
izoabr
2019-04-30 08:56:32 +08:00
@mengzhuo #24 感谢,这个我刚才还真没想到。
就问题聊问题,如果是其它硬件平台,那应该是打多种包呀,我们装软件不都是 for x86/for armv8 那样多种包嘛。
其实完全就是跟 pyinstaller 那样打包嘛。
然后检查下依赖的库里有没有平台限制相关的,有的库是特定平台要求的。
tt0411
2019-04-30 08:58:05 +08:00
你领导的需求完全可以实现, 我自己以前就实现过.
tempdban
2019-04-30 09:12:15 +08:00
你老板就是让你自己弄个容器,拿 docker 做,自己 chroot 进去跑
blless
2019-04-30 09:16:41 +08:00
docker 在老 centos 什么的系统支持可并不好,唯一途径就是禁用 cgo 的 go
kimqcn
2019-04-30 09:22:49 +08:00
全平台完全是拍脑袋说话,明确几个版本的操作系统,然后分别适配吧。
sagaxu
2019-04-30 09:40:40 +08:00
@zjsxwc Java 也可以
zjsxwc
2019-04-30 10:30:09 +08:00
@sagaxu

misp cpu 的 linux 路由器上跑 java 基本不可能,golang 可以
qinyusen
2019-04-30 10:45:14 +08:00
先干掉那个不让用 docker 的需求。。。。

脑子有坑么?现在 armv8 都有 docker 了。
akmonde
2019-04-30 10:48:00 +08:00
@shuax https://www.jianshu.com/p/08c657bd34f1
感谢,不过他不能使虚拟环境跨平台使用,只能本机移动位置?
我换了机器就路径不对识别不了。
akmonde
2019-04-30 11:47:32 +08:00
@tt0411 求指点,我迁移后没法用管理器,老板要求即使没有 docker 之类的,也是解压就能用。原生能支持么?
akmonde
2019-04-30 11:53:50 +08:00
@izoabr 是,所以我想用借助三方软件打包的,但领导意思是新机器可能啥都没有,也没有管理软件,要求能解压完直接用,我不知道原生的怎么做到。
@izoabr 是啊,他要求依赖全拿进去,不管啥系统都能适配,连着 python 本身一起打包,说新机器可能没有 python。
chaleaochexist
2019-04-30 11:57:54 +08:00
docker...
akmonde
2019-04-30 16:52:10 +08:00
@miaoever 给赞,很好的东西,但是我那儿环境比较复杂,里面还加了 celery 之类的,不是很适合。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/559926

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX