Python2.7 还是 3.5。纠结 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ddgreat
V2EX    Python

Python2.7 还是 3.5。纠结

  •  
  •   ddgreat 2015-11-17 09:10:23 +08:00 via iPhone 26733 次点击
    这是一个创建于 3625 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题概述:一共两个项目,目前大三,都是自己的创新项目,非商业应用。第一个项目是一个基于地图 API 的 WebApp 。后端希望使用 Python 实现,框架用 flask 。第二个项目打算做微信公众号,需要涉及到爬虫。
    团队情况:较熟悉 C++ Javascript
    Python 还没开始学。之前看过一点 Python2.7 语法。
    68 条回复    2016-04-04 11:25:53 +08:00
    echo1937
        1
    echo1937  
       2015-11-17 09:17:21 +08:00
    建议 3.43 ,除非你的项目有非用不可的 3.5 特性。
    rogwan
        2
    rogwan  
       2015-11-17 09:19:48 +08:00
    一次性交付的项目,基本不考虑后期迭代升级,而自身有有丰富的 2.7 经验,自然选择 Python2.7 。
    通常而言,项目都是需要不断更新的, Python3+推出其实已经快 8 年了,重要、常用库基本都更新支持了,建议选 Python3.5 。
    elvea
        3
    elvea  
       2015-11-17 09:23:03 +08:00
    如果没有历史的包袱,外围的库也支持,直接上最新 3.5 。
    WildCat
        4
    WldCat  
       2015-11-17 09:32:30 +08:00
    Scrapy 不支持 Python 3 真是一件蛋疼的事情
    yangzh
        5
    yangzh  
       2015-11-17 09:43:27 +08:00 via iPhone
    3.5
    tanteng
        6
    tanteng  
       2015-11-17 09:45:53 +08:00
    直接 3 ,新手入门: https://github.com/tanteng/learn-python
    kongkongyzt
        7
    kongkongyzt  
       2015-11-17 09:47:18 +08:00
    选 3.5
    Feiox
        8
    Feiox  
       2015-11-17 09:50:30 +08:00
    我们已经在 3 个项目中使用了 3.4 其中 2 个已经逐步迁移到 3.5 了,
    从 2.7 迁移到 3.5 什么感觉呢?嗯,美丽新世界!
    seers
        9
    seers  
       2015-11-17 09:58:05 +08:00
    Banio
        10
    Banio  
       2015-11-17 10:02:19 +08:00
    我 1 个月前也跟 LZ 有一样的顾虑 我都工作 2 年了 面对的是直接工作问题 我果断就选择 2 了 LZ 这种的 我觉得直接 3 就行了
    GPU
        11
    GPU  
       2015-11-17 10:06:23 +08:00
    我感觉 debian 安装 py3.5 还是有点麻烦啊。 源里面的还是 3.2 。目前只知道编译安装

    还有其他快捷的方法吗?
    crazyxin1988
        12
    crazyxin1988  
       2015-11-17 10:11:02 +08:00
    好不好 一定看要需求 看情况
    上生产 不是闹着玩 不是玩新特性
    既然 LZ 说要用 flask , 楼主可以参考 flask 对 python3 的支持情况,以及一些注意点
    http://flask.pocoo.org/docs/0.10/python3/
    chengzhoukun
        13
    chengzhoukun  
       2015-11-17 10:11:37 +08:00
    学生当然 Python 3 ,有没有历史包袱
    zhouquanbest
        14
    zhouquanbest  
       2015-11-17 10:21:09 +08:00
    Tornado 已经支持 3 的 async 等关键字
    推荐尝试下 爽的不要不要的
    a398058068
        15
    a398058068  
       2015-11-17 10:26:23 +08:00
    P3
    leeuserb
        16
    leeuserb  
       2015-11-17 10:26:33 +08:00
    区别没那么大
    PythonAnswer
        17
    PythonAnswer  
       2015-11-17 10:39:14 +08:00
    333333333333333333333333333
    life
        18
    life  
       2015-11-17 10:43:25 +08:00
    Python 2.5 的可怎么办啊。。。
    ericls
        19
    ericls  
       2015-11-17 10:49:16 +08:00
    目前本人新项目都是 3.5
    Feiox
        20
    Feiox  
       2015-11-17 10:51:07 +08:00
    @GPU 使用 pyenv 或者 docker ,真心好用
    GPU
        21
    GPU  
       2015-11-17 10:55:02 +08:00
    @Feiox docker 去哪找?
    kingxsp
        22
    kingxsp  
       2015-11-17 11:04:24 +08:00
    建议选 Python3.5
    9hills
        23
    9hills  
       2015-11-17 11:05:17 +08:00
    2.7
    clino
        24
    clino  
       2015-11-17 11:07:13 +08:00
    话说如果 3 升级的时候慢慢一个变化一个变化地升而不是断崖式的
    现在大家也不用这么纠结了
    QQ1685425675
        25
    QQ1685425675  
       2015-11-17 11:37:48 +08:00
    建议 3 以上,我目前用的 3.43 ,打算生 3.5 ,
    matthewz
        26
    matthewz  
       2015-11-17 12:16:39 +08:00
    @GPU pyenv install ?
    initialdp
        27
    initialdp  
       2015-11-17 12:20:04 +08:00   1
    通常这种情况我都建议跟着系统走。如果系统,比如 Debian7 ,默认是 2 ,就用 2 。默认是 3 ,就用 3 。

    要不然就是根据客户的要求来。

    总之,能不折腾就不折腾,把时间和精力放在更有意义的事情上。
    MinskyNg
        28
    MinskyNg  
       2015-11-17 12:28:36 +08:00
    差别又没多大,两个都用用不就好了
    jhaohai
        29
    jhaohai  
       2015-11-17 12:30:07 +08:00 via iPhone
    既然不是商业的项目,那就上 python3 好了
    GPU
        30
    GPU  
       2015-11-17 13:04:44 +08:00
    先打一场,打的时候 xxxx
    dreampuf
        31
    dreampuf  
       2015-11-17 13:18:30 +08:00
    > We strongly recommend using Python 2.6 and 2.7 with activated Python 3 warnings during development. If you plan on upgrading to Python 3 in the near future we strongly recommend that you read How to write forwards compatible Python code.

    http://flask.pocoo.org/docs/0.10/advanced_foreword/#the-status-of-python-3
    EarlGrey
        32
    EarlGrey  
       2015-11-17 13:38:38 +08:00
    楼主如果还没怎么开始学 Python 的话,可以先看看这篇:《 Python 生态系统入门》 http://codingpy.com/article/python-ecosystem-introduction
    Wangxf
        33
    Wangxf  
       2015-11-17 13:57:40 +08:00
    选 PHP 就不会纠结了,最好的语言
    zhexue69
        34
    zhexue69  
       2015-11-17 14:06:55 +08:00
    上个月刚把生产环境几台 Python2.4 的服务器升级到 Python2.7
    以前的部署脚本都是针对 CentOS4 的,现在改 CentOS7 ,为了 systemctl 大改了下。
    Allianzcortex
        35
    Allianzcortex  
       2015-11-17 14:44:04 +08:00
    同是 Python+flask 。去年学的时候也是大三上,是从 Python 2,7.9 开始的。我建议是从 Python3 开始,毕竟 Python3 未来是主流,支持 Python3 的库肯定是越来越多, Python3 本身的特性要比 Python2 好很多。如果是做爬虫收集,关键就在于你的框架的选择,如果要用 Scrapy 的话,可以试着用 virtualenv Python2 ,抓取到 Mysql 里,之后用 Python3 来写 flask 读取数据。

    ---

    目前已经正式不打算考研了,正在修改简历,拾缀一下自己的项目。等到能看的过去的时候开源出来,和 LZ 再交流吧。
    icedx
        36
    icedx  
       2015-11-17 14:45:35 +08:00
    都学 无他
    usapla
        37
    usapla  
       2015-11-17 14:47:54 +08:00
    好捉急啊,我不知道该跑还是该走,虽然现在我连爬都不会。
    Feiox
        38
    Feiox  
       2015-11-17 15:10:55 +08:00
    @GPU docker pull python3.5
    xierch
        39
    xierch  
       2015-11-17 15:12:38 +08:00
    3.5 吧
    即使要写 2.7 ,也尽量按照兼容 3 的写法来写
    msg7086
        40
    msg7086  
       2015-11-17 15:34:06 +08:00 via Android
    @GPU 然而 debian 有很多分支,而且是可以跨版本安装单个软件包的。
    GPU
        41
    GPU  
       2015-11-17 15:34:13 +08:00
    @Feiox 就?
    wawehi
        42
    wawehi  
       2015-11-17 15:34:20 +08:00
    没历史包袱肯定选新的
    TimePPT
        43
    TimePPT  
    PRO
       2015-11-17 15:36:22 +08:00
    刚切了 3.5 ,就 str 原 生 Unicode 我就用的很开心了
    Feiox
        44
    Feiox  
       2015-11-17 15:40:10 +08:00
    @GPU 自从用了 docker 世界都清爽了很多。其实 pyenv 也很简单,
    pyenv install 3.5.0 && pyenv virtualenv 3.5.0 pkgenv && pyenv local pkgenv
    完成了之后,每次你进入这个目录就会自动切换到你建立的这个名叫 pkgenv 的虚拟环境,切换到其他目录就自动退出
    sox
        45
    sox  
       2015-11-17 15:40:56 +08:00
    熟悉 C++ Javascript 就用 Node 呗,这样 C++ Javascript 都用得上了
    GPU
        46
    GPU  
       2015-11-17 16:36:16 +08:00
    @Feiox pyenv 还没有用过。今晚了解一下。
    lincanbin
        47
    lincanbin  
       2015-11-17 16:39:42 +08:00
    python 3 和 python 2 虽然是两门完全不同的语言,但是如果你会 py3 ,那么当你需要 py2 的时候,学起来自然也不会太慢。
    总之不要纠结太多,随便选一个学了再说。
    yahoo21cn
        48
    yahoo21cn  
       2015-11-17 16:43:19 +08:00
    用来谋生的话,用 2 ,没什么可说的
    TrustyWolf
        49
    TrustyWolf  
       2015-11-17 17:05:35 +08:00
    Fedora 23 Server 默认版本 Python 3.4.3 0.0
    jarlyyn
        50
    jarlyyn  
       2015-11-17 17:26:50 +08:00
    做 web,代码重要么?

    代码不重要,数据才重要。

    代码只要能快速做出来,满足需求,没有 bug 就好。

    所以

    1.找你能参考的代码对应的版本。

    2.既然熟悉 c++和 js,为什么一定要从头学 Python?
    wencan
        51
    wencan  
       2015-11-17 17:40:34 +08:00
    python 2.7
    目前主流 linux 发行版都支持这个

    很少有支持 python 3.x 的
    flyingfz
        52
    flyingfz  
       2015-11-17 17:44:26 +08:00
    npm 安装一些模块的时候,如果装的是 python 3.5 ,会报错,( node 4.0 带的 npm )。
    是我的配置不对?
    meloncrashed
        53
    meloncrashed  
       2015-11-17 18:01:40 +08:00
    2 的中文让人欲仙欲死
    gejigeji
        54
    gejigeji  
       2015-11-17 20:52:15 +08:00
    还在用 2.6.6 懒得安装了
    fy
        55
    fy  
       2015-11-17 21:24:40 +08:00
    直接 3 啊!!!我去年就迁移了,很爽
    restran
        56
    restran  
       2015-11-17 21:26:09 +08:00
    计划迁移到 3 , 2 是到 2020 年停止支持了吗?如果是的话,时间很近了。
    RickyBoy
        57
    RickyBoy  
       2015-11-17 21:33:58 +08:00
    Python 3 无误
    jsjscool
        58
    jsjscool  
       2015-11-18 09:43:13 +08:00
    Python 3 不解释。 2 处理中文字符让新手蛋碎
    matthewz
        59
    matthewz  
       2015-11-18 10:17:58 +08:00
    @wencan 预装和支持是一个概念?
    elvis_w
        60
    elvis_w  
       2015-11-18 14:07:21 +08:00
    如果主要是开发 flask ,慎用 Python 3
    http://docs.jinkan.org/docs/flask/python3.html
    tcpdumpp
        61
    tcpdumpp  
       2015-11-18 16:06:15 +08:00
    2.7
    janxin
        62
    janxin  
       2015-11-18 17:37:57 +08:00
    关于 Flask 的使用, Python3 的支持是没有问题的,目前测试用例运行都很正常:
    https://travis-ci.org/mitsuhiko/flask

    @elvis_w @dreampuf 提供的 Flask 文档其实是 2013 年更新的,最新的可以在 https://github.com/mitsuhiko/flask/blob/master/docs/python3.rst 查看,不过官网没更新,这个问题也有人提 issue 了。

    其实我们线上系统仍旧是使用 2.7.10 版本 CPython ,主要原因是在某些性能紧要一点的场景可以切换至 Pypy 。目前 pypy3 应该是不支持 flask 的。
    ghostsf
        63
    ghostsf  
       2015-11-18 20:46:36 +08:00
    Python 3 吧
    ddgreat
        64
    ddgreat  
    OP
       2015-11-19 10:02:01 +08:00 via iPhone
    我们最后选择了 Python3 。:)感谢大家的回复。
    elvis_w
        65
    elvis_w  
       2015-11-19 10:44:37 +08:00
    @janxin 官网文档没问题,因为你给的链接是 master 分支的,而在生产环境中使用的 0.10.1 版本的文档内容和官网一致: https://github.com/mitsuhiko/flask/blob/0.10.1/docs/python3.rst

    事实上, Flask 本身从一开始就能够很好地支持 Python 3 。不推荐用 3 的原因主要还是部分插件不支持,虽然这些插件数量很少,但是很重要
    wencan
        66
    wencan  
       2015-11-23 10:14:13 +08:00
    @matthewz
    我的表述不太恰当
    但你想,如果系统预装 python2.7 ,那么系统其它预装的依赖 python 的包也一定是依赖 python2.7
    onexz
        67
    onexz  
       2015-12-07 15:10:22 +08:00
    搭车问一下, 3.5 和 3.4x 有没有兼容性问题?
    vdo
        68
    vdo  
       2016-04-04 11:25:53 +08:00
    2015 年的 Pycon 上 Guido 依旧是一脸小媳妇样,苦口婆心敦促各位开发者尽快切换到 Py3 ,帮助已经停止维护的模块做兼容,演讲中数次无奈地停顿,甚至“哽咽”
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1254 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 23:46 PVG 07:46 LAX 16:46 JFK 19:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86