python 调用子进程模块方法报错:module 'subprocess' has no attribute 'call'
环境:win7
shell: git-bash
文件名: subprocess.py
代码如下:
import subprocess
print('$ nslookup www.seasidecrab.com')
r = subprocess.call(['nslookup', 'www.seasidecrab.com'])
print('Exit code:', r)
问题
完全按照廖雪峰老师的例子来的,但莫名报错:
Traceback (most recent call last):
File "subprocess.py", line 12, in <module>
import subprocess
File "D:\Projects\pytest\subprocess.py", line 15, in <module>
r = subprocess.call(['nslookup', 'www.seasidecrab.com'])
AttributeError: module 'subprocess' has no attribute 'call'
解决
一开始以为是 windows 平台的问题,因为有些模块 windows 上是没有的。但廖老师的教程里并没有提到,这让产生怀疑,廖老师的教程不会出现这种低级的错误,那么肯定是自己代码问题了,但代码很简洁,没有什么可以挖掘的。
百度这个错误,终于发现了问题的本质:
程序文件名是
subprocess.py
,导致import subprocess
导入的不是 Python 中的subprocess
, 而是你的这个文件,然而你的文件中没有call
。所以,文件名不要与 Python 中的模块名相同。
修改一下文件名即可。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。