【问题标题】:web.py not importing MySQLdbweb.py 不导入 MySQLdb
【发布时间】:2011-09-29 19:58:49
【问题描述】:

我正在使用 web.py,但由于某种原因,我收到以下错误:

[Thu Sep 29 13:47:20 2011] [error] [client 64.8.210.120]   File "/usr/lib/python2.6/site-packages/web.py-0.36-py2.6.egg/web/db.py", line 975, in __init__
[Thu Sep 29 13:47:20 2011] [error] [client 64.8.210.120]     import MySQLdb as db
[Thu Sep 29 13:47:20 2011] [error] [client 64.8.210.120] ImportError: No module named MySQLdb

这是我的 sys.path,万一那是罪魁祸首?不过,我看到了.egg,所以我不知道。想法?

 ['', '/usr/lib/python2.6/site-packages/Bravo-1.7.2-py2.6.egg', 
    '/usr/lib/python2.6/site-packages/Twisted-11.0.0-py2.6-linux-i686.egg',
     '/usr/lib/python2.6/site-packages/construct-2.04-py2.6.egg',
 '/usr/lib/python2.6/site-packages/zope.interface-3.7.0-py2.6-linux-i686.egg', '/usr/lib/python2.6/site-packages/web.py-0.36-py2.6.egg', 
'/usr/lib/python2.6/site-packages/MySQL_python-1.2.3-py2.6-linux-i686.egg', 
    '/usr/lib/python2.6/site-packages/setuptools-0.6c12dev_r88846-py2.6.egg',
     '/usr/lib/python26.zip', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', 
    '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/site-packages',
     '/usr/lib/python2.6/site-packages/PIL']

这里是2.6 site-packages目录的内容:

[root@xxxx ~]# locate *.egg
/root/MySQL-python-1.2.3/dist/MySQL_python-1.2.3-py2.6-linux-i686.egg
/usr/lib/python2.4/site-packages/errorhandler-1.1.1-py2.4.egg
/usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg
/usr/lib/python2.4/site-packages/xlrd-0.7.1-py2.4.egg
/usr/lib/python2.4/site-packages/xlutils-1.4.1-py2.4.egg
/usr/lib/python2.4/site-packages/xlutils-1.4.1-py2.5.egg
/usr/lib/python2.4/site-packages/xlwt-0.7.2-py2.4.egg
/usr/lib/python2.6/site-packages/Bravo-1.7.2-py2.6.egg
/usr/lib/python2.6/site-packages/MySQL_python-1.2.3-py2.6-linux-i686.egg
/usr/lib/python2.6/site-packages/Twisted-11.0.0-py2.6-linux-i686.egg
/usr/lib/python2.6/site-packages/construct-2.04-py2.6.egg
/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg
/usr/lib/python2.6/site-packages/setuptools-0.6c12dev_r88846-py2.6.egg
/usr/lib/python2.6/site-packages/web.py-0.36-py2.6.egg
/usr/lib/python2.6/site-packages/zope.interface-3.7.0-py2.6-linux-i686.egg

如果我打开 python(2.4 或 2.6),我可以import MySQLdb 没有问题。

谢谢, 汤姆

【问题讨论】:

    标签: python web.py mysql-python sys.path


    【解决方案1】:

    在你的 bashrc(通常在 /etc/bashrc)文件的底部放这个(或者只是更新 PYTHONPATH 环境变量以包含 /usr/lib/python2.6/site-packages):

    if [ $PYTHONPATH ]
    then
        export PYTHONPATH=$PYTHONPATH:/usr/lib/python2.6/:/usr/lib/python2.6/site-packages/
    else
        export PYTHONPATH=/usr/lib/python2.6/:/usr/lib/python2.6/site-packages/
    fi
    

    或者,对于运行脚本的特定用户,将上述内容放入/home/[USER_RUNNING_SCRIPT]/.bashrc

    然后源文件:

    $ source ~/.bashrc
    # or
    # source /etc/bashrc
    

    【讨论】:

    • 您永远不需要添加系统包目录。
    • 实际上,这行得通。它现在有另一个权限问题,但这些通常更容易解决。谢谢!
    • 很高兴你把它修好了,汤姆! @IgnacioVazquez-Abrams,运行脚本的用户可能有一个空的 PYTHONPATH 或以某种方式更改了它。
    • @chown:除了site 模块添加了这些目录,而不是$PYTHONPATH
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      尝试编写一个简单的页面来显示 sys.path,因为它存在于 Web 服务器执行环境中。不确定这是否是您在问题中显示 sys.path 时所显示的内容,或者您​​是否从登录名中以交互方式运行该内容。运行 http 服务器的用户 ID 可能与您作为普通用户所拥有的环境设置不同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-01
        • 2011-10-20
        • 1970-01-01
        • 1970-01-01
        • 2012-07-11
        • 2012-02-03
        • 2012-02-05
        相关资源
        最近更新 更多