Windows 下 Python 统一字符编码
背景说明
在尝试从源码安装某个 PyPi 库时,Windows 下报错——提示 UnicodeDecodeError
,这个错误在 Linux 测试没有出现过。然而甲方的技术栈,无论是软件,还是机器,都依赖微软系,这就倒逼我们去适配他们的环境。
问题分析
虽然 PyPi 有这个包的 wheel,但是更新没有那么频繁。所以,官方推荐将代码 Clone 下来,再通过 setup.py 来构建并安装。
图 1: 安装时报错
在尝试从源码安装某个 PyPi 库时,Windows 下报错——提示 UnicodeDecodeError
,这个错误在 Linux 测试没有出现过。然而甲方的技术栈,无论是软件,还是机器,都依赖微软系,这就倒逼我们去适配他们的环境。
虽然 PyPi 有这个包的 wheel,但是更新没有那么频繁。所以,官方推荐将代码 Clone 下来,再通过 setup.py 来构建并安装。
图 1: 安装时报错
昨天访问域名提示证书过期,记得之前有配置了 certbot
自动更新,但是查看日志发现是 certbot renew
更新时出错了,报错指出其依赖 python3-certbot-nginx
没有装,这里需要夸下这种可插拔的插件设计。
想装该 plugin 时,依赖 Hell 出现了 —— certbot-nginx
本身又依赖 nginx-core
,然而笔者的 Nginx 是自己从源码编译的,发行版中的 nginx-core
要比自编译的旧,很多新特性不支持(如 ssl_reject_handshake
)。
想必,这就是不使用官方版本的坏处了:DIY 固然好,能跟上最近的包功能特性,但有一好没两好,周边的官方拓展库可能暂时没有为新版的包做适配,那么新副本开荒的工作就只能自己包揽过来做了。
在开发机器视觉应用时,Python 这一脚本语言很适合作为胶水将其它语言编写的组件粘贴起来,也就是说控制逻辑部分变动比较快的话,使用 JS, Lua 或 Python 来写,除了开发速度快,还有利于跨平台运行;而底层的基础设施 Infra 则采用机器执行效率更高的语言,甚至可以为不同的硬件做汇编指令级别的定制。
本文要解决的问题,包括:
.so
动态链接库为什么这么设计(Why’s THE Design)是一系列关于计算机程序设计中决策的文章,在这个系列的每一篇文章中都会提出一个具体的问题,并从不同的角度讨论这种设计的优缺点、对具体实现造成的影响。
TL;DR
这样的机制是保护用户在无意中调用脚本中的代码。以下面的脚本为例子:
项目中每个模块下都有为数不少的 Python 文件,当做了一些局部的修改,需重启服务验证想法时,不要使用旧版的系统缓存的 pyc 编译文件,而是修改后的 Python 文件。