(10)python开发经验
文章目录
- 1 cp35 cp36什么意思
- 2 找不到pip
- 3 subprocess编码错误
- 4 导出依赖文件包含路径
- 5 使用自己编译的python并且pyinstall打包程序
更多精彩内容 |
---|
👉内容导航 👈 |
👉Qt开发 👈 |
👉python开发 👈 |
1 cp35 cp36什么意思
在Python的文件名或包名中,
cp35
和cp36
通常指的是编译器版本,具体来说,它们代表的是CPython的版本号。CPython是Python的标准实现,使用C语言编写。因此,cp35
表示该文件或包是为CPython 3.5版本编译的,而cp36
表示是为CPython 3.6版本编译的。这些标识常用于预编译的Python扩展模块,以明确该模块适用于哪个Python版本。
2 找不到pip
错误信息:moduleNotFoundError: no module named pip
错误原因:执行pip install --upgrade pip
命令后错误。
解决办法:执行python -m ensurepip
3 subprocess编码错误
这个错误通常是由于在使用
subprocess
模块执行命令时,输出的内容编码与系统默认的编码(在Windows上通常是GBK)不匹配引起的。
UnicodeDecodeError
表明尝试用GBK编码解码一段实际上不是GBK编码的字节序列。
Traceback (most recent call last):File "D:\Python\Python313\Lib\threading.py", line 1041, in _bootstrap_innerself.run()~~~~~~~~^^File "D:\Python\Python313\Lib\threading.py", line 992, in runself._target(*self._args, **self._kwargs)~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "D:\Python\Python313\Lib\subprocess.py", line 1611, in _readerthreadbuffer.append(fh.read())~~~~~~~^^
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 42: illegal multibyte sequence
解决办法:
指定正确的编码:如果你知道命令输出的编码格式,可以在解码时指定正确的编码。例如,如果输出是UTF-8编码的,你可以这样处理:
import subprocessresult = subprocess.run(['your_command'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, encoding='utf-8')
print(result.stdout)
4 导出依赖文件包含路径
-
使用
pip freeze > requirements.txt
导出依赖时,如果是直接安装的whl包,就会包含路径; -
解决办法:将路径改为版本号;
-
使用
pip list --format=freeze > requirements.txt
导出就可以;
5 使用自己编译的python并且pyinstall打包程序
使用自己编译的python程序开发pyqt时,使用pyinstall打包失败
解决办法:编译的时候加上--enable-shared
;