Почему subprocess.run () возвращает пустое значение? - PullRequest
0 голосов
/ 17 мая 2018

Когда я запускаю это:

>>> import subprocess
>>> subprocess.run(['/home/nicolas/.local/venvs/docker-compose/bin/python', '-c', "'import sys; print(sys.path[-1])'"], stdout=subprocess.PIPE)

Я получаю пустое stdout:

CompletedProcess(args=['/home/nicolas/.local/venvs/docker-compose/bin/python', '-c', "'import sys; print(sys.path[-1])'"], returncode=0, stdout=b'')

Но когда я запускаю команду непосредственно в консоли, я получаю желаемый результат:

$ /home/nicolas/.local/venvs/docker-compose/bin/python -c 'import sys; print(sys.path[-1])'
/home/nicolas/.local/venvs/docker-compose/lib/python3.6/site-packages

Может кто-нибудь сказать мне, почему?И / или скажите мне, как я могу получить sys.path конкретного venv?

1 Ответ

0 голосов
/ 17 мая 2018

Как сказал @ Аран-Фей, subprocess уже избегает споров.Таким образом, двойные кавычки не были необходимы.

Это работает:

>>> subprocess.run(['/home/nicolas/.local/venvs/docker-compose/bin/python', '-c', 'import sys; print(sys.path[-1])'], stdout=subprocess.PIPE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...