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

import mymodule

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

Traceback (most recent call last):

File"main.pyw", line 27, in

import core.main_window

ImportError: No module named main_window

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

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

参考文献:

我似乎找到了为Windows添加pyw支持的原始补丁,但没有争论为什么它不应该也适用于Linux。

对于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不关心一点!

而且,你需要chmod +x它:)

这对于您实际运行的脚本来说是正确的,但对于您加载的模块,Windows和Linux之间存在差异(出于没有充分理由),Windows将加载pyw文件,而Linux"无法处理"( 或不会)。 我原来的问题仍然存在。 有没有办法让Python(在Linux下)加载pyw文件作为模块。 重命名所有pyw文件当然是另一种可能性,但这需要我编辑我想避免的同事程序。 将pyw文件作为模块加载具有某些应用程序,如我在原始问题中的链接中所述。

linux下import包中的模块,关于python:在Linux下将pyw文件导入为模块相关推荐

  1. 未找到导入的项目 .wpp.targets。请确认 Import 声明中的路径正确,且磁盘上存在该文件

        今天打开vs突然报了一个错......... .wpp.targets.请确认 <Import> 声明中的路径正确,且磁盘上存在该文件 重新新建一个项目,dll全部都是黄色感叹号 ...

  2. 电脑重启后python导入的库不见_为什么python不会在启动时自动导入每个模块?

    我正在玩Python 2.7,每个人都知道,在每个程序的开头,你总是需要导入模块.例如:import random import time for x in range(1, 300): print ...

  3. Linux修改jar包中的配置文件

    打包以及修改jar包 cd genesys_data_etl mvn clean package -Poffline -Dmaven.test.skip=true 日志如下: [INFO] --- m ...

  4. linux中网页播放音乐,Linux_在Linux系统下播放网页中的背景音乐技巧,在Linux中的firefox浏览许多网页 - phpStudy...

    在Linux系统下播放网页中的背景音乐技巧 在Linux中的firefox浏览许多网页时,很多使用了基于WMP的背景音乐播放器,如部份baidu空间.但firefox默认不支持播放. 在LINUX的源 ...

  5. Linux替换jar包中内容

    因fastjson低版本存在漏洞,故线上服务需要升级到fastjson-1.2.70.jar,替换jar服务中的低版本jar包 1.创建一个临时目录     mkdir temp 2.将jar添加到目 ...

  6. linux替换war包中的文件,Linux zip与unzip命令:替换war包中的某个文件

    原本,想用jar命令来快速替换war包的文件的,可是,发现Ubuntu中没有装Java,懒癌发做,遂使用zip与unzip命令代替.app zip:压缩命令ide 格式: zip    [-选项]  ...

  7. 如何讲页面打入jar包中_如何把我的Java程序变成exe文件?

    JAVA是一种"跨平台"的语言,拥有"一次编写,处处运行"的特点,让它成为当今IT行业,必不可少的一门编程语言. 每一个软件开发完成之后,应该大家都需要打包程序 ...

  8. linux 在命令行中复制的快捷键_在 Linux 中加速工作的键盘快捷键 | Linux 中国

    学习键盘快捷键将使生产率提高 3.3%-- S Sathyanarayanan 操作鼠标.键盘和菜单会占用我们很多时间,这些可以使用键盘快捷键来节省时间.这不仅节省时间,还可以使用户更高效. 你是否意 ...

  9. python设计自定义栈类_Python如何自定义模块?Python基础教程,第十讲,自定义模块...

    学完此次课程,我能做什么? 通过此次课程,我们将学会如何自定义自己的模块和包,以及如何引用到自己的项目中,从而实现代码的复用. 学习此次课程,需要多久? 5-10分钟 课程内容 什么是Python的标 ...

最新文章

  1. Scrapy爬取IT之家
  2. python argsort排序结果_numpy.argsort()可以对元组或列表进行排序
  3. uni app 调用网络打印机_前端工程师 | 原生小程序坑点:uni-app到底好用在哪里?...
  4. vue 项目引用static目录资源_vuejs-templates静态资源目录src/assets、和static/区别
  5. CSS Grid中的陷阱和绊脚石
  6. Spring自定义属性编辑器及原理解释.md
  7. [题解] 2038: [2009国家集训队]小Z的袜子(hose)
  8. 记风雨兼程的2020年,2021年,我来了!
  9. 用nginx转发请求tomcat 如何配置访问日志获取真实ip
  10. jenkins linux虚拟机,Jenkins实战演练之Linux节点任务配置
  11. GetTickCount64的使用
  12. oracle临时表中数据消失了,oracle 临时表的使用
  13. healthkit简介
  14. 小白理解transformer解析博客
  15. 怎样把孩子写的日记或作文制成电子版呢?
  16. 用PS怎么画虚线圆?
  17. 台式计算机红外线端口,台式电脑的红外线端口在哪?
  18. 自定义ListVIew添加上下更多项
  19. 手机怎么把照片转JPG格式?这两种方法可以迅速转换
  20. 32.我的wafBypass之道

热门文章

  1. 《嗜血的皇冠-光武皇帝之刘秀的秀》——读后感
  2. 解决github下载慢的方法,不修改hosts文件,不修改网络
  3. c语言借助栈单链表逆置,借助栈实现单链表逆置--数据结构
  4. 雷替曲塞-聚乙二醇-马来酰亚胺 Raltitrexed-PEG-MAL
  5. 51单片机与PC通信
  6. 洋桃开发板笔记(三) 最基本的USART的串口使用
  7. DLP数据丢失防护/数据防泄漏 隐私保护概念解析
  8. 关于Unicode控制字符RLO,LRO,PDF 的坑
  9. EN 845-2: 砖石工程附属部件规范-第2部分:门楣/过梁—CE认证
  10. Linux下载和在在虚拟系统安装以及linux的常用命令解说