微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python import语句在函数中失败

我有一个python模块,需要能够在Windows和Linux上运行。 运行时响应某些键盘的“热键”。 这是一个Python 3.3脚本。

在我的类构造函数中,我执行以下操作:

self.setup_stdin()

函数setup_stdin是这样的:

def setup_stdin(self): self.osname = os.name if self.osname == 'posix': self.setup_posix_stdin() elif self.osname == 'nt': self.setup_nt_stdin()

当我在Linux上运行时,我对setup_posix_stdin没有任何问题,它只是使stdin非阻塞,所以我可以处理按键。

dlltool:无法创build.lib文件:libpython27.a:无效的bfd目标

通过authentication将文件复制到java中的本地networking中的计算机上

打开没有菜单栏的浏览器窗口(JavaScript?)

如何使用time.h获取UTCTime秒数的小数部分

计算程序执行时间

setup_nt_stdin如下:

def setup_nt_stdin(self): import msvcrt

但是,当我在Windows 7上运行,我的程序炸弹

NameError: global name 'msvcrt' is not defined

为了解决这个问题,当我在Windows上运行时,我将import语句移到了文件的顶部,并用passreplace了setup_nt_stdin函数体,并且它工作正常。

我以为我可以从一个函数导入。 这个函数是在一个类里面的,还有一些其他的语法我错过了吗?

通过一个dynamic的表单和面板循环,并检查单选button是否检查

获取已安装应用程序的列表

如何在Windows编程中触发最大化/最小化

无法删除Tomcat / Windows下的Jenkins中的pom.xml

检索文件属性

import语句只在本地作用域中绑定导入模块的名称

为了解决这个问题,你可以这样做:

def setup_nt_stdin(self): global msvcrt import msvcrt

虽然考虑到你可以多次import某些东西而不再执行任何操作,而且在其他地方实际使用名称msvcrt之前需要检查操作系统,所以在需要每个特定窗口的函数中import msvcrt可能更有意义它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐