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
justfly
V2EX  ›  Python

你们用python做web开发时会遇到那些深坑,pythoner们畅所欲言,讨论一下啊

  •  
  •   justfly · 2013-06-21 14:03:51 +08:00 · 6656 次点击
    这是一个创建于 4198 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,大家讨论在python web开发过程中遇到那些深坑,让你头痛不止又豁然开朗的!

    不用python的也可以分享一下自己开发中的被坑的辛酸史
    46 条回复    1970-01-01 08:00:00 +08:00
    helone
        1
    helone  
       2013-06-21 14:08:11 +08:00
    配置环境....
    saggit
        2
    saggit  
       2013-06-21 14:08:57 +08:00
    全局变量,这个经常会遇到!
    ry_wang
        3
    ry_wang  
       2013-06-21 15:36:56 +08:00
    UI永远是WEB的毒瘤。。。
    ma6174
        4
    ma6174  
       2013-06-21 15:37:54 +08:00
    编码问题
    glasslion
        5
    glasslion  
       2013-06-21 16:00:32 +08:00
    还在用Python2.5
    loading
        6
    loading  
       2013-06-21 16:04:45 +08:00 via iPhone
    编码 +65536
    iscraft
        7
    iscraft  
       2013-06-21 16:34:39 +08:00
    编码 BOM 尼玛
    yakczh
        8
    yakczh  
       2013-06-21 16:44:06 +08:00
    编码
    ufo22940268
        9
    ufo22940268  
       2013-06-21 18:43:28 +08:00
    菜鸟表示import冲突的问题让我很困扰
    okidogi
        10
    okidogi  
       2013-06-21 18:52:10 +08:00
    有一次启动 django 出现了 cannot import indexes 的错误。indexes是haystack的一个模块,一般这种情况是哪儿的import出现了循环引用。debug了半天,结果发现是因为没有设定文件编码而代码出现了中文字符导致的 (#-*-coding:utf-8 -*-)。

    但是坑爹的是,一般没有设定文件编码出现中文字符django会报另外的错误的。当时杀掉django的心都有了,说多了都是泪阿。
    est
        11
    est  
       2013-06-21 19:01:12 +08:00
    wsgi 不能异步。
    ushuz
        12
    ushuz  
       2013-06-21 20:21:57 +08:00
    编码+10086
    xavierskip
        13
    xavierskip  
       2013-06-21 23:22:09 +08:00
    字符编码,头大!!!
    likoshow
        14
    likoshow  
       2013-06-21 23:25:51 +08:00
    被时区坑过
    shachuan
        15
    shachuan  
       2013-06-22 00:00:17 +08:00
    珍爱生命 远离win~

    重启后就没了的问题这算个what啊
    ayang23
        16
    ayang23  
       2013-06-22 00:09:13 +08:00
    from __future__ import division 引发的整数相除得出浮点数的结果差点没把折腾死
    caoyue
        17
    caoyue  
       2013-06-22 01:09:42 +08:00
    字符编码
    以及各种时间转换
    greatghoul
        18
    greatghoul  
       2013-06-22 01:14:59 +08:00
    各种包因为墙的关系安装不上。
    jjx
        19
    jjx  
       2013-06-22 08:38:20 +08:00
    n年前,做一个内网django项目, 没有关闭debug

    结果几个后内存占用过大当机,百般调试后, 无解,最终查看代码原来django debug模式把执行过的sql语句都写到一个querties的列表中去的(现在去看了一下,还是如此). n天运行下来后,这个querites列表内存占用太大。
    da_a
        20
    da_a  
       2013-06-22 09:41:54 +08:00
    真是编码啊 很头疼 肉眼分辨不出来 只能试错
    0bit
        21
    0bit  
       2013-06-22 10:15:52 +08:00
    @ayang23 既然引入这个了,不就是想要浮点数的结果吗?
    0bit
        22
    0bit  
       2013-06-22 10:18:13 +08:00
    公司内部隔离网段,安装充满了各种依赖的类库,绝对是最蛋疼的事情,没有之一。

    考虑自己布一个PYPI
    raptor
        23
    raptor  
       2013-06-22 11:22:22 +08:00
    编码是个常见的坑,很多年前我曾经在cherrypy里碰到过,最后还是改了cherrypy的源码解决的……
    全局变量也是个风险很大的坑,我曾经用这个来存在用户登录信息,结果用户登录窜了……还好发现得及时……现在再也不敢用了,必须session伺候。
    时区也是坑,不过是小事了,服务器时间不准才头疼。
    至于windows……嘿嘿,珍爱生命,远离windows。

    @0bit virtualenv或virtualenvwrapper
    muxi
        24
    muxi  
       2013-06-22 11:34:56 +08:00
    配置环境和包管理
    python社区的各种包实在是混乱,每次安装我都忍不住喷一遍
    GTim
        25
    GTim  
       2013-06-22 12:00:36 +08:00
    我前天在aliyun上装pylibmc,各种问题,装了2个小时才修好
    y0
        26
    y0  
       2013-06-22 12:16:39 +08:00
    我想在 linux 上装 gmpy 装不动,很郁闷,老说缺各种 library, 还说找不到 Python.h
    zyAndroid
        27
    zyAndroid  
       2013-06-22 12:49:52 +08:00   ❤️ 1
    @y0 没装python-dev吧,

    apt-get install pythin-dev
    zyAndroid
        28
    zyAndroid  
       2013-06-22 12:51:02 +08:00
    @greatghoul 用proxychain可以解决这个问题
    humiaozuzu
        29
    humiaozuzu  
       2013-06-22 13:01:25 +08:00
    - 编码问题
    - pypi 上很多包是要到 sourceforge 上面下载,然后 sf 间歇性被墙
    - 有时偷懒不用 virtualenv 某些包换新版本后各种问题折腾
    - gevent
    sillyousu
        30
    sillyousu  
       2013-06-22 13:06:14 +08:00
    装PIL的时候遇到过依赖的库路径不对,需要做软链或者改手工指定正确的路径。
    y0
        31
    y0  
       2013-06-22 14:17:36 +08:00
    @zyAndroid

    python-dev is already the newest version.
    python-dev set to manually installed.

    这算是装了还是没装啊。需要手动装? 在哪里 make install 吗?
    y0
        32
    y0  
       2013-06-22 14:28:29 +08:00
    @zyAndroid 搞定了,感谢。
    no13bus
        33
    no13bus  
       2013-06-22 14:47:54 +08:00
    @raptor 遇到了相同的问题,cherrypy一些中文显示只能改源码
    oldcai
        34
    oldcai  
       2013-06-22 14:50:58 +08:00
    比起C++,楼上这些都不是个事。

    不过我感觉算的上坑的,就是多线程因为GIL还是只能用单核——这也不算什么——但是为什么每个线程还是要10M的堆栈呢,内存开销巨大!(当然,也有办法缓解(ulimit(但是分太小了程序会崩溃(坑))))

    好吧,好不容易有了个stackless python吧,兼容官方C python吧,官方还不合并。
    raptor
        35
    raptor  
       2013-06-22 15:30:53 +08:00
    @no13bus 所以我放弃cherrypy很多年……
    jokaye
        36
    jokaye  
       2013-06-23 23:33:01 +08:00
    编码, 单元测试
    mengzhuo
        37
    mengzhuo  
       2013-06-26 11:12:21 +08:00
    @jjx 就算是debug不也是把SQL语句输出到log里面吗
    mengzhuo
        38
    mengzhuo  
       2013-06-26 11:14:08 +08:00
    @greatghoul 可以把pip源设到清华的
    bigzhu
        40
    bigzhu  
       2013-06-27 13:38:01 +08:00
    import 包的时候,自己的代码写的多了需要分包的时候,还是很蛋疼的.没法用比较好的相对路径引用.
    VYSE
        41
    VYSE  
       2013-06-27 14:06:07 +08:00
    12颗至强请求过多还是只能会满载,即使用了GEVENT+GUNICORN+NGINX,实在受不了CPYTHON的效率
    zhwei
        43
    zhwei  
       2013-06-27 14:23:03 +08:00 via Android
    编码 + 1
    漫长的包。。(自己在校内弄了个pypi后好多了)
    Python版本问题算不算
    jjx
        44
    jjx  
       2013-06-28 10:13:38 +08:00
    @mengzhuo

    我们说的是一回事吗? 这里输出到日志同我讲的事情没有关系, 我的意思是django在debug模式下会将sql 语句写到一个列表,如果你的程序类型是监控式的,有密集的sql查询,在django中另起一个线程或进程在跑,则在几天内会耗尽你的内存
    mengzhuo
        45
    mengzhuo  
       2013-06-28 10:24:09 +08:00
    @jjx

    debug模式下尽量收集最大信息不正是程序应该做的吗?
    所以忘记关闭debug模式导致宕机不算作楼主所说的“坑”,应该是人为失误。
    Livid
        46
    Livid  
    MOD
       2013-06-30 01:31:57 +08:00
    各类教程只能教你最基本的 CRUD,但是实际项目中对安全和性能的需求,需要自己积累经验。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4130 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:30 · PVG 13:30 · LAX 21:30 · JFK 00:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.