首页 > 技术文章 > python2 一些错误处理

zealousness 2018-04-08 23:25 原文

python2各种问题

pip安装django出错:python2 -m pip install django

编码问题:Unicode Decode Error ascii codec can't decode byte...

原因:windows系统默认编码是gbk,而pip默认编码是utf8,故出错

解决方法: python27\Lib\site-packages下,新建一个 sitecustomize.py 文件,写入

import sys

sys.setdefaultencoding('gbk')

pip安装django出错:python2 -m pip install django

源码编译问题:IOError: [Errno 22] invalid mode ('wb') or filename

原因:pip默认下载最新版本,最新版本为django2.0,而源上只有django2.0 python3的whl文件,没有python2的whl文件。因此只能采用源码编译安装,而源码编译安装又出了这个错误

解决方法:指定下载较低版本的django,这里用django 1.11.4

查看django版本:https://pypi.python.org/pypi

pip指定版本号用“==”:

python2 -m pip install django==1.11.4

 

启动django出错:python2 manage.py runserver

RuntimeError: maximum recursion depth exceeded in cmp

django启动时出错,报错显示在python27/Lib/functool.py的第56行

解决办法:在python目录中的Lib下面找到functools56

convert = {

        '__lt__': [('__gt__', lambda self, other: other < self),

                   ('__le__', lambda self, other: not other < self),

                   ('__ge__', lambda self, other: not self < other)],

        '__le__': [('__ge__', lambda self, other: other <= self),

                   ('__lt__', lambda self, other: not other <= self),

                   ('__gt__', lambda self, other: not self <= other)],

        '__gt__': [('__lt__', lambda self, other: other > self),

                   ('__ge__', lambda self, other: not other > self),

                   ('__le__', lambda self, other: not self > other)],

        '__ge__': [('__le__', lambda self, other: other >= self),

                   ('__gt__', lambda self, other: not other >= self),

                   ('__lt__', lambda self, other: not self >= other)]

    }

 

修改成:

convert = {

        '__lt__': [('__gt__', lambda self, other: not (self < other or self == other)),

                   ('__le__', lambda self, other: self < other or self == other),

                   ('__ge__', lambda self, other: not self < other)],

        '__le__': [('__ge__', lambda self, other: not self <= other or self == other),

                   ('__lt__', lambda self, other: self <= other and not self == other),

                   ('__gt__', lambda self, other: not self <= other)],

        '__gt__': [('__lt__', lambda self, other: not (self > other or self == other)),

                   ('__ge__', lambda self, other: self > other or self == other),

                   ('__le__', lambda self, other: not self > other)],

        '__ge__ ': [('__le__', lambda self, other: (not self >= other) or self == other),

                   ('__gt__', lambda self, other: self >= other and not self == other),

                   ('__lt__', lambda self, other: not self >= other)]

    }

django连接postgresql出错:python2 manage.py runserver

django.db.utils.OperationalError:

FATAL: no pg_hba.conf entry for host "172.16.23.129", user "postgres", database "datamanager", SSL on
FATAL: no pg_hba.conf entry for host "172.16.23.129", user "postgres", database "datamanager", SSL off

PostgreSQ数据库为了安全,它不会监听除本地以外的所有连接请求,当用户通过JDBC访问是,会报一些如下的异常:

org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host

 

要解决这个问题,只需要在PostgreSQL数据库的安装目录下找到/data/pg_hba.conf,找到“# IPv4 local connections:”

在其下加上请求连接的机器IP

host all all 127.0.0.1/32 md5

32是子网掩码的网段;md5是密码验证方法,可以改(见文件pg_hba.conf上的说明)

 

推荐阅读