依赖关系搞死人啊

2015-07-23 15:00:05 +08:00
 julyclyde
昨天有一段代码,自己机器上正常,放到线上就挂了
OAuth1 client的程序,用requests-oauthlib依赖oauthlib

我自己机器上oauthlib==0.7.2 以前装的旧版本;线上服务器pip下载1.0.0
结果发现其中signature.py内容改了,算法用pyjwt库实现,但oauthlib本身不强制依赖pyjwt,而是oauthlib[signedtoken]才依赖pyjwt,坑死人

然后,装吧,又发现pyjwt依赖的cffi现场编译需要libffi-dev库。真是……最后定稿是给线上也用旧的oauthlib==0.7.2

转到新岗位才7个工作日就搞出19分钟大事故。唉~
5413 次点击
所在节点    Python
31 条回复
laotaitai
2015-07-23 23:01:06 +08:00
上Docker, 把你开发搭建好的环境, 弄到线上去. 再也没有"我这里运行得好好的, 为嘛到你那里就不行呢"的问题了.
poorguy
2015-07-23 23:06:00 +08:00
@julyclyde 那估计我没看懂你的主题了,virtualenv可以保证开发环境和生产环境一致
julyclyde
2015-07-23 23:36:03 +08:00
@poorguy 你想得过远了。virtualenv可以用来维持一个稳定体系,我这里也用了。但往里加新包时的混乱,用不用v都会发生的
julyclyde
2015-07-23 23:36:53 +08:00
@ChangxuBlack 目前有requirements 但r和setup.py都只能维持一瞬间的和平,很快还会被打破的
hiddenman
2015-07-23 23:42:15 +08:00
@realpg 我们测试用PHP5.5 线上用PHP5.4
9hills
2015-07-24 00:45:02 +08:00
Requirments 里不指定版本的锅。
julyclyde
2015-07-24 08:13:06 +08:00
@9hills requirements里只写了我自己用的包。用的包依赖的其它包没写,就载在这里
HowardMei
2015-07-24 09:24:09 +08:00
一般的python库依赖用 https://pex.readthedocs.org/en/latest/ 打包就可以了,
如果还依赖系统库,可以考虑 https://github.com/spotify/dh-virtualenv 打成deb包[alien deb->rpm]
有篇文章讲了这个问题: https://nylas.com/blog/packaging-deploying-python
julyclyde
2015-07-24 12:39:43 +08:00
终于钓来一个有含金量的回复
ChangxuBlack
2015-07-24 22:44:16 +08:00
@julyclyde 有道理,不过setup.py可以限定版本号。。。确实不好解决
qqblog
2015-07-25 05:26:11 +08:00
没看懂1.0.0版本到底有什么问题,为什么没能编译libffi-dev库?难道是centos问题?只是你有问题吧,依赖并没问题,熟悉就好啦

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

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

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

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

© 2021 V2EX