诺志
软硬件开发技术笔记

从源码安装python3
本文在centos7.6系统上实践

此处下载最新的3.9.9版本,其他版本可以自行到https://www.python.org/ftp/python/查看
/opt/python-3.9.9可以根据习惯更换路径

python3安装后,不要卸载原有python2的任何包,因为python3和python2有很多不兼容的地方
操作系统有很多工具都依赖原有的python2,直接替换会导致包括在yum在内的很多包不可用

...

简单介绍virtualenv的使用和原理
本文在centos7.6系统上实践

可以通过pip或者yum安装virtualenv,推荐使用pip安装,因为pip安装版本较新,老版本有些参数已经在新版本中废弃
pip安装virtualenv

yum安装virtualenv

...

Python2 两种表示字符序列的类型

Python3 两种表示字符序列的类型

Unicode是表现形式,utf-8 是存储形式,utf-8 虽然是使用最广泛的编码,但也仅仅是 Unicode 的一种存储形式罢了。

...

分析hasattr在python2/python3下遇到的不同行为的问题

先说结论:
python2和python3的hasattr实现,实际是调用getattr,然后判断是否会抛出异常,如果抛出异常,则判定为没有指定的属性返回false,否则返回true。但是python2会捕获所有的异常,而python3仅捕获PyExc_AttributeError异常,其他异常会继续向上抛,导致上层逻辑收到异常。

相关依据:
python2的hasattr文档描述看这里,代码实现看这里
python3的hasattr文档描述看这里,代码实现看这里

...

之前分配给公司实习生一个任务,需要制作一个带python脚本的rpm包,在制作时后发现他的rpm编译过程不会自动编译出.pyc.pyo文件,所以安装出来的就不带.pyc.pyo文件,他的.py脚本安装目录为/usr/local/bin/test

rpmbuild在编译时用到的脚本都在/usr/lib/rpm这个目录下的脚本,通过在rpmbuild时的输出看出,当制作带python脚本的rpm包时,具体执行/usr/lib/rpm/brp-python-bytecompile这个脚本,猫腻就在这个脚本的最后一段

在使用compileall模块的compile_dir函数时,使用了一个正则表达式参数:

...

安装依赖包, uwsgi-plugin-python这个包很重要,没有他uwsgi没法调用python程序

python-flask主程序, 就只有一个首页页面,显示"hi"

关闭防火墙

...

在运行pip安装软件的时候,有些文档的写法如下

看下python的帮助文档

直译过来就是以脚本的方式运行模块的相应py文件, 但是通过测试发现,大部分模块是不能这么玩的,比如:

...
2017-01-02

可能会有疑问,第三种方式和第二种一样的效果,有什么区别,
第三种方式只是用了cmp这个函数简单的比较了下大小,实际可以自定义函数进行比较,
从而实现更复杂的比较逻辑。

此处需要注意的是,lambda的返回结果应该是>0或者<0,当然=0就没有大小之分
如果使用如下的方法,将得不到正确的排序结果

因为>比较的结果是:true/false, 而python会将false转成0, true转成1,这将导致lambda比较的结果永远>=0

...
分类
2篇
c
1篇
8篇
18篇
8篇
2篇
搜索