当前位置: 首页 > 面试题库 >

在CMD中运行时,脚本失败并出现AttributeError,但在IDLE中执行正常

陆昊
2023-03-14
问题内容

我很新,很困惑。我用tkinter尝试了一个简单的脚本,它在IDLE中工作正常,但是当我尝试从CMD启动它时-
tkinter窗口打开,看起来还不错,但是当您尝试单击任何按钮或文件菜单选项时,就会引发AttributeError:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python33\lib\tkinter\__init__.py", line 1489, in __call__
return self.func(*args)
  File "060214_Manual_Evaluation_of_Protein-protein_Cross-Links.py", line 13, in Open_csv
  self.CsvPath = tk.filedialog.askopenfilename()
  AttributeError: 'module' object has no attribute 'filedialog'

我很感谢您的任何投入,或者在这里我可以找到有关IDLE和CMD之间差异的更多信息。


问题答案:

人们问起python版本是因为tk.filedialog在2.x中拼写不同。但是,我怀疑您的问题是空闲在托管环境中运行代码,该环境掩盖了您未发布的代码中的错误,该错误未正确导入tkinter.filedialog。为说明起见,以下内容来自标准的3.4.2控制台解释器

>>> import tkinter as tk
>>> tk.filedialog
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'filedialog'

这是Idle’s Shell中的相同语句。

>>> import tkinter as tk
>>> tk.filedialog
<module 'tkinter.filedialog' from 'C:\\Programs\\Python34\\lib\\tkinter\\filedialog.py'>

没有错误的原因是因为空闲已将filedialog子模块导入为tkinter.filedialog(在sys.modules中)。如果这也是您的问题,那么为您提供的解决方案是在下面添加导入,并引用不带’tk’前缀的’filedialog’。

>>> from tkinter import filedialog
>>> filedialog
<module 'tkinter.filedialog' from 'C:\\Programs\\Python34\\lib\\tkinter\\filedia
log.py'>
>>> filedialog.askopenfilename
<function askopenfilename at 0x0000000000498BF8>

如果这不能解决此问题,请编辑您的问题以添加一个真正的最小代码示例,并确切说明如何同时使用Idle和’CMD’(在Windows上是cmd.exe还是什么?)。



 类似资料:
  • 所以我在eclipse中设置了一个基本的你好世界,我可以很容易地使用cmd编译它(我已经设置了所有必要的路径),但是当我尝试使用java命令来执行你好世界时,它总是返回相同的错误:错误:无法找到或加载主类helloWorld引起的:java.lang.NoClassDefFoundError: net/codejava/helloWorld(错误的名称:helloWorld) 以下是使用的代码:

  • 我正在尝试使用空手道执行bash脚本。我可以从karate-config.js和.feature文件中执行脚本。我还可以将参数传递给脚本。问题是,如果脚本失败(以0以外的其他东西退出),测试执行将继续并以SuccesFull结束。 我发现当脚本回显时,我可以作为脚本的结果访问它,这样我就可以回显退出值并对其进行断言(在一些可重用的特性中),但这似乎是一个变通方法,而不是一个有效的干净解决方案。有没

  • 问题内容: 根据Docker文档:Dockerfile中只能有一条CMD指令。如果您列出多个CMD,则只有最后一个CMD才会生效。 我希望在CMD命令(本例中为init)之前执行一个简单的bash脚本(处理docker环境变量)。 有什么办法吗? 问题答案: 使用自定义入口点 创建一个可以执行所需操作的自定义入口点,然后最后执行您的CMD。 注意 :如果您的映像已经定义了一个自定义入口点,则可能需

  • 空手道afterFeature函数在本地运行时运行正常,但在Jenkins中运行时失败,我得到。而应为。 代码片段 主要的功能片段 cleanup.feature Jenkins的日志:的断言失败,但它没有记录响应状态的实际值。 此外,我没有看到在Jenkins中执行postFeature的日志,也不是我要做进一步分析的cucumber报告的一部分。

  • 我在Heroku的./bin文件夹中有这个脚本。该脚本调用parse cloud函数。 脚本运行时没有错误 Heroku控制台日志显示如下输出。云函数有一些console.log语句,但是它们的输出也没有出现。 heroku[router]:at=info-method=POST-path=“/parse/functions/resetJob”host=app.herokuapp。com requ