Я хотел бы создать подпроцесс в 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, она работает:
(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), и не работает при запуске в качестве скрипта?
PS: Я также пытался использовать методы «Popen» и «call» модуля подпроцесса, такая же проблема ...