属性错误:'module'对象没有属性python3.2

2024-04-26 05:51:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个python文件:

test.py

def k():
    print ("I am a test")
    print ("see! I do nothing productive.")

if __name__ == "__main__":
    k()

test2.py

^{pr2}$

但是当我运行test2.py时,它会显示错误:

Traceback (most recent call last):
  File "C:\Python32\test2.py", line 3, in <module>
    test.k()
AttributeError: 'module' object has no attribute 'k'

Tags: 文件namepytestifmaindefam
1条回答
网友
1楼 · 发布于 2024-04-26 05:51:58

正如评论中所建议的,您正在跟踪一个名为“test”的内置模块。如果您重命名“测试.py“对于任何其他名称(即不是内置模块),导入它,并将两个文件驻留在同一个文件夹中,它将正常运行。在

例如:

温度_测试.py

def k():
    print("Test!")

if __name__ == "__main__":
    k()

温度测试2.py

^{pr2}$

运行temp_test2.py将生成以下输出:

a
Test!

关于您的注释,您使用subprocess.call()的尝试失败了,因为您需要添加shell=True参数,以便shell可以分析和解释命令,或者您需要将参数拆分为一个列表并传递它:

import subprocess
subprocess.call('python temp_test.py', shell=True)

或者:

import subprocess
subprocess.call(['python', 'temp_test.py'])

我不知道你的os.system()呼叫为什么失败。这对我2.7版有效:

import os
os.system('python temp_test.py')

TL;DR

  1. 您的模块/文件名与内置模块相同。换个名字吧。在
  2. 阅读subprocess.call() docs。您启动的子进程不正确。在

最后一点:您的问题内容涉及的主题与您在评论中列出的尝试解决方法不同(模块导入与子进程启动)。这是两个完全不同的东西,所以在你继续写你正在写的任何脚本之前,一定要仔细阅读一下,这样你就可以使用正确的脚本来完成你的任务了。在

相关问题 更多 >