【问题标题】:Python and different Operating SystemsPython 和不同的操作系统
【发布时间】:2009-01-08 18:38:09
【问题描述】:

我即将开始一个使用 python 的个人项目,我将在 Linux(Fedora) 和 Windows(Vista) 上使用它,尽管我不妨让它在我使用它的时候在 mac 上工作。我找到了一个适用于所有 3 的 GUI 的 API。我问的原因是因为我一直听说如果您在开始之前了解它们很容易避免小的差异。有没有人有任何符合这些方面的提示或建议?

【问题讨论】:

    标签: python cross-platform


    【解决方案1】:

    一般:

    • 小心路径。尽可能使用 os.path。
    • 不要假设 HOME 指向用户的主目录/配置文件目录。
    • 避免使用诸如 unix 域套接字、fifos 和其他特定于 POSIX 的东西。

    更具体的东西:

    • 如果您使用的是 wxPython,请注意,某些事件在哪个线程中生成可能会有所不同。不要假设事件是在特定线程中生成的。如果您正在调用触发 GUI 事件的方法,请不要假设在您的方法返回时事件处理程序已经完成。 (当然反之亦然。)
    • GUI 的显示方式始终存在差异。布局并不总是以完全相同的方式实现。

    【讨论】:

    • 我要补充一点,你不应该假设 mac os x 用户会想要使用 GTK,而且 mac os x 和带有 wxWidgets 的 windows 之间存在 差异。
    【解决方案2】:

    我在 Python 跨平台开发中注意到的一些事情:

    • OSX 没有托盘,因此应用程序通知通常发生在 Dock 中。因此,如果您正在构建后台通知服务,您可能需要少量特定于平台的代码。
    • os.startfile() 显然只适用于 Windows。 Leopard 上的 Python 2.5.1 或 Python 2.5.1 都不支持它。
    • os.normpath() 也是您可能要考虑使用的东西,只是为了让您的路径和卷使用正确的斜杠表示法和卷名称。
    • 图标在 Windows 和 OSX 中的处理方式完全不同,请确保您提供的图标大小都适合(16x16、24x24、32x32、48x48、64x64、128x128 和 256x256),并务必阅读使用 wx 小部件设置图标。

    【讨论】:

      【解决方案3】:
      1. 您应该注意正在开发的 Python 版本。尤其是在Mac上,操作系统默认安装的Python版本比较老(当然可以安装更新的版本)

      2. 不要使用操作系统特定的库

      3. 特别注意“特殊”的 UI 元素,例如任务栏图标(窗口)...

      4. 使用路径时使用正斜杠,避免使用 C:/, /home/..., ... 使用 os.path 来处理路径。

      【讨论】:

      • 不要使用正斜杠 - 使用 os.sep 代替,Windows 上的所有内容都不能与正斜杠一起正常工作
      • 我更喜欢使用 os.normpath() 因为它会标准化为任何 os.sep 等等。
      • 更好的是完全避免斜线并使用 os.path.join
      【解决方案4】:

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

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

      【讨论】:

      • pyInstaller 可用于创建 Windows 和 Linux 兼容的 exe,而 py2app 适用于 mac。
      猜你喜欢
      • 2011-06-21
      • 2011-07-28
      • 2019-04-10
      • 2014-10-22
      • 2011-11-02
      • 2012-05-18
      • 2017-03-19
      • 2014-05-27
      相关资源
      最近更新 更多