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 · 26190 次点击
    这是一个创建于 3296 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题概述:一共两个项目,目前大三,都是自己的创新项目,非商业应用。第一个项目是一个基于地图 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
    WildCat  
       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  
       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   ·   实用小工具   ·   5034 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:52 · PVG 17:52 · LAX 01:52 · JFK 04:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.