Python 可移植性的大列表

4 投票
7 回答
2931 浏览
提问于 2025-04-15 16:53

我觉得整理一个关于制作Python应用程序可移植性注意事项的清单是个好主意。在可移植性方面,有很多细微的“陷阱”,这些通常只有通过经验和仔细测试才能发现。因此,需要有一个清单来解决一些更常见的问题。

请在评论中分享一个陷阱(以及解决方法)。

7 个回答

2

有些模块是不能在不同操作系统上使用的。比如说,curses 这个模块只能在 Linux 系统上用,而 msvcrt 这个模块只能在 Windows 系统上用。解决这个简单问题的方法就是不要使用这些模块,而是找其他可以替代的模块。

3

“通用换行符支持”(在PEP278中描述)对于代码的可移植性非常有用。
它确保Python代码中只使用 \n 作为换行符:

christophe@orion:~$ printf 'testing pep278\r\n' > test.txt
christophe@orion:~$ python
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) 
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> open('test.txt').read()
'testing pep278\r\n'
>>> open('test.txt','U').read()
'testing pep278\n'
4

如果你在Python中处理二进制文件格式,要注意structarray这两个模块的大小和字节顺序是跟机器有关的。struct可以通过在格式字符串中始终使用<>来做到跨平台使用。可是array就不行了。对于字节数组来说,它可能是可以跨平台的,但文档里并没有保证这一点。

撰写回答