问题记录

pip 安装包问题

问题描述:pip install 安装whl文件报错
错误信息:UnicodeEncodeError: 'utf-8' codec can't encode character '\udcba' in position 66: surrogates not allowed
错误原因:安装路径有中文
关键字: pip, install, whl

python, sqlalchemy, mysql插入数据问题

问题描述:使用pandas读取csv之后,将dataframe数据刷选完后,使用sqlalchemy存入数据库报错
错误信息:AttributeError: 'numpy.float64' object has no attribute 'translate'
错误原因:需要把numpy.float64转为float
关键字: sqlalchemy, mysql, pandas

python编译pyd, so后出现name '__file__' is not defined问题

问题描述:在常量量初始化时,使用了内置变量__file__。在py,pyc下没有问题,但是在编译成pyd,so后出现执行会出现name '__file__' is not defined的NameError
错误信息:NameError: name '__file__' is not defined
错误原因:__file__等一些内置变量在python中是在导入初始化开始生成的,但是在Cython中是在导入初始化完成时生成的。可以把常量初始化改为函数获取等延后加载的方式解决该问题。
例子:

# 该文件编译为so,pyd之后。在导入或者运行时会报错
import os
# 默认地址为当前文件的同级目录
DEFAULT_CONFIG_PATH = os.path.join(
    # 由于加载时需要变量 __file__, 所以编译为so, pyd时报错
    os.path.dirname(__file__), '.', 'general_config.yml'
)


def get_default_config_path():
    return DEFAULT_CONFIG_PATH 

更改为:

# 该文件编译为so,pyd之后。在导入或者运行时可以正常运行
import os
# 记录常量的字典
CONSTANT = {}

def get_default_config_path():
    try:
        # 尝试返回常量字典中的'DEFAULT_CONFIG_PATH'项
        return CONSTANT['DEFAULT_CONFIG_PATH']
    except KeyError:
        # 如果发生KeyError则说明'DEFAULT_CONFIG_PATH'未初始化
        # 此时__file__已经存在,将其初始化后返回
        CONSTANT['DEFAULT_CONFIG_PATH'] = os.path.join(
            os.path.dirname(__file__), '.', 'general_config.yml'
        )
        return CONSTANT['DEFAULT_CONFIG_PATH']

关键字: Python, Cython

python数字逗号分隔字符串

'{:,f}'.format(12345679.012)  # '12,345,679.012000'

你可能感兴趣的:(问题记录)