我从一位用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中的处理存在差异,可以采取哪些措施来解决它?
答案 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不关心一点!