我想在python 3.5中创建一个子进程,我有这个问题:
AttributeError: module 'subprocess' has no attribute 'run'
我搜索了同样的问题,但在其他答案中,问题来自python 2.7或版本低于3.5。在这里,我肯定会在python 3.5.2
这是我用来启动脚本的命令:
(isadora) rdharreville@rdharreville-VirtualBox:~/projects/isadora$ python webbackend/flask-app/subprocess.py
和代码:
import subprocess
subprocess.run(["ls", "-l"])
真正的想法是,当我在相同的虚拟环境中运行它时,但是在python shell中,它可以工作:
(isadora) rdharreville@rdharreville-VirtualBox:~/projects/isadora$ python
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.run(["ls", "-l"])
total 44
-rw-rw-r-- 1 rdharreville rdharreville 17696 juin 6 17:28 bn.log
-rwxrwxr-x 1 rdharreville rdharreville 1114 mai 31 09:11 docker-compose.yml
drwxrwxr-x 4 rdharreville rdharreville 4096 mai 23 17:00 isadora
-rw-rw-r-- 1 rdharreville rdharreville 0 juin 6 17:44 logerrors.txt
drwxrwxr-x 6 rdharreville rdharreville 4096 mai 25 10:49 notebooks
drwxrwxr-x 6 rdharreville rdharreville 4096 juin 6 16:21 resources
drwxrwxr-x 3 rdharreville rdharreville 4096 juin 6 16:21 webbackend
drwxrwxr-x 8 rdharreville rdharreville 4096 juin 5 17:18 webfrontend
CompletedProcess(args=['ls', '-l'], returncode=0)
>>>
我做的最后一件事是检查我是否在同一个python环境中,是打印(sys.version)作为脚本的开头,结果如下:
(isadora) rdharreville@rdharreville-VirtualBox:~/projects/isadora$ python webbackend/flask-app/subprocess.py
3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609]
Traceback (most recent call last):
File "webbackend/flask-app/subprocess.py", line 1, in <module>
import subprocess
File "/home/rdharreville/projects/isadora/webbackend/flask-app/subprocess.py", line 24, in <module>
subprocess.run(["ls", "-l"])
AttributeError: module 'subprocess' has no attribute 'run'
所以这就是问题:
你知道为什么这个在一个案例(python shell)中工作,并且在作为脚本启动时不起作用?
PS:我也试过使用metods'Popen'和'调用'子进程模块,同样的问题...
答案 0 :(得分:0)
将脚本subprocess.py的名称更改为其他名称。
因为当你将它作为脚本运行时,会出现一个带有脚本名称的模块&#39; subprocess&#39;。而且python里面没有找到run()方法。
当你在python shell中运行代码时,没有自定义的子进程&#39;模块来自你的脚本。