Python和不同的操作系统

问题描述:

我即将开始使用python的个人项目,我将在Linux(Fedora)和Windows(Vista)上使用它,尽管我可能会在Mac上使用它,它。我找到了一个可以在所有3上工作的GUI的API。我所要求的原因是因为我一直听说如果在开始之前知道它们,很容易避免的小差异。有没有人有这方面的提示或建议?Python和不同的操作系统

一般:

  • 小心路径。尽可能使用os.path。
  • 不要以为HOME指向用户的家庭/配置文件目录。
  • 避免使用像unix域套接字,fifos和其他POSIX特定的东西。

更具体的东西:

  • 如果你使用wxPython的,请注意,有可能是在像这产生线程某些事件东西差异不要以为事件的产生。特定的线程。如果您正在调用触发GUI事件的方法,则不要认为事件处理程序在您的方法返回时已完成。 (当然,反之亦然)。
  • GUI将会如何显示。布局并不总是以完全相同的方式实施。
+0

我想补充一点,你不应该假设mac os x用户会想要使用GTK,并且在mac os x和windows与wxWidgets之间有**差异。 – Arafangion 2011-07-07 05:17:48

  1. 你应该照顾你是对开发Python版本。特别是,在Mac上,Python的默认版本的OS安装,是相当老的(当然,新版本可以安装)

  2. 不要使用OS特定的库

  3. 要特别小心的'特殊'用户界面元素,如任务栏图标(窗口),...

  4. 使用正斜杠时使用路径,避免C:/,/ home/...,...使用os.path工作与路径。

+1

不要使用正斜杠 - 反而使用os.sep,并不是所有的窗口在正常斜杠下都能正常工作 – Moe 2009-01-08 18:59:54

+0

我更喜欢使用os.normpath(),因为它将标准化为任何os.sep等等。 – Soviut 2009-01-08 19:00:48

有些事情,我也注意到自己的跨平台开发的Python:

  • OSX没有一个托盘,所以应用程序通知通常发生就在被告席上。因此,如果您正在构建后台通知服务,则可能需要少量特定于平台的代码。
  • os.startfile()显然只适用于Windows。无论是Leopard上的Python 2.5.1还是不支持它。
  • os.normpath()也是你可能想要考虑的东西,只是为了让你的路径和卷使用正确的斜杠记法和卷名。
  • 图标在Windows和OSX中以基本不同的方式处理,请确保您为所有尺寸(16x16,24x24,32x32,48x48,64x64,128x128和256x256)都提供了适当尺寸的图标,并且请务必阅读用wx小部件设置图标。

一些文件名问题:This.File和this.file是Linux上的不同文件,但指向Windows上的同一文件。如果您管理某些文件存储库并从两个平台访问它,则会出现麻烦。不太常见的相关问题是像NUL或LPT这样的名称是Windows上的文件。

二进制分发代码(如果有的话)可能会在Win上使用py2exe,在Mac上使用py2app并且不会在Linux上存在。