модуль 'подпроцесс' не имеет атрибута 'run' при запуске в виде скрипта - PullRequest
0 голосов
/ 07 июня 2018

Я хотел бы создать подпроцесс в 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» модуля подпроцесса, такая же проблема ...

1 Ответ

0 голосов
/ 07 июня 2018

Измените имя вашего скрипта subprocess.py на что-то другое.

Потому что, когда вы запускаете его как скрипт, появляется модуль с именем вашего скрипта 'subprocess'.внутри него найдите метод run ().

И когда вы запускаете код в оболочке python, из вашего скрипта не появляется пользовательский модуль «подпроцесс».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...