在Linux下将pyw文件导入为模块

时间:2014-01-27 16:26:40

标签: python windows import module

我从一位用Python for Windows编写的同事那里得到了一些代码。他正在使用几个模块,其中文件的扩展名为mymodule.pyw而不是mymodule.py。这只需要做

  

导入mymodule

即使没有名为mymodule.py的文件。在Linux(在我的情况下是Ubuntu 13.04)中,这不起作用。我收到此表单的错误消息:

  

追踪(最近一次通话):   文件“main.pyw”,第27行,in      import core.main_window

     

ImportError:没有名为main_window的模块

只需将模块文件重命名为.py就可以解决问题,但这是不可取的,因为我想在Windows和Linux上使用相同的软件。

为什么Python和Windows中的处理存在差异,可以采取哪些措施来解决它?

参考文献: I seem to have found the original patch that added pyw support to windows, but with no argument as to why it shouldn't also apply to Linux.

1 个答案:

答案 0 :(得分:2)

对于Windows版本的python存在pyw扩展,因为windows在CLI和GUI应用程序之间有很强的区别。单独的扩展映射到单独的python解释器,py到python.exe(CLI)和pyw到pythonw.exe(GUI)。

这仅适用于在python文件上双击以启动正确的解释器;因此,逻辑上应该具有pyw扩展名的唯一文件是需要双击的“入口点”脚本;所有其他文件,甚至在Windows上都可以而且应该有py扩展名。

在linux上,pyw和py都没有特别帮助使脚本双击,它应该在第一行上带有“shebang”,并具有可执行文件权限(chmod + x)。在unix上,可执行文件通常根本没有扩展,但如果你愿意,仍然可以以.pyw结尾,linux不关心一点!