Python 可移植性的大列表
我觉得整理一个关于制作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中处理二进制文件格式,要注意struct
和array
这两个模块的大小和字节顺序是跟机器有关的。struct
可以通过在格式字符串中始终使用<
或>
来做到跨平台使用。可是array
就不行了。对于字节数组来说,它可能是可以跨平台的,但文档里并没有保证这一点。