Использование `pip freeze> require` в коде Python - PullRequest
0 голосов
/ 31 января 2019

Я нашел, как использовать команду pip в коде:

import subprocess
subprocess.call(["pip", "freeze"])

Он отображает все пакеты в командной строке.

Но это не работает так:

import subprocess
subprocess.call(["pip", "freeze", ">", "requirements.txt"])

Он не записывает его в файл, он снова печатает в консоли.

Как правильно выполнить эту команду?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Используйте это:

>>> with open('requirements.txt', 'w') as file_:
...   subprocess.Popen(['pip', 'freeze'], stdout=file_).communicate()
...

или call, если вы предпочитаете

>>> with open('requirements.txt', 'w') as file_:
    ...   subprocess.call(['pip', 'freeze'], stdout=file_)
0 голосов
/ 31 января 2019

Перенаправление реализовано в оболочке / терминале, это означает, что команда должна выполняться в оболочке с использованием ключевого аргумента shell=True.В противном случае подпроцесс выполняет первый элемент в списке и использует остальные в качестве аргументов для него.Для получения дополнительной информации см. документацию для подпроцесса.

subprocess.call("pip freeze > requirements.txt", shell=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...