Подтвердить что ты не робот

Установите пакет и напишите в файл требований .txt с пипсом

Я ищу способ установить пакет с помощью pip и записать эту информацию о версии пакета в файл project.txt проекта. Для тех, кто знаком с npm, это то, что делает npm install --save.

Использование pip freeze > requirements.txt отлично работает, но я обнаружил, что забыл запустить это или случайно включил неиспользуемые пакеты, которые я установил для тестирования, но решил не использовать.

Итак, следующий psuedocode:

$ pip install nose2 --save

Появится файл requirements.txt с:

nose2==0.4.7

Я предполагаю, что могу выполнить вывод save, чтобы захватить номера версий, но я надеюсь, что есть более простой способ.

4b9b3361

Ответ 1

Чтобы получить информацию о версии, вы можете использовать выборочную блокировку выборочно после установки. Вот функция, которая должна делать то, о чем вы просите:

pip_install_save() {
    package_name=$1
    requirements_file=$2
    if [[ -z $requirements_file ]]
    then
        requirements_file='./requirements.txt'
    fi
    pip install $package_name && pip freeze | grep -i $package_name >> $requirements_file
}

Обратите внимание на -i на команду grep. Пип не чувствителен к регистру с именами пакетов, поэтому вы, вероятно, захотите этого.

Ответ 2

Просто добавьте smth, как

function pips() {
    echo $'\n'$1 >> requirements.txt; pip install $1
}

в ваш .bashrc или .bash_profile и используйте команду pips для установки пакета и сохранения его имени в файле требований. txt Пример:

pips django-waffle

на основе комментария Akash Kothawale:)

Ответ 3

Я написал следующую функцию bash, которую я использую:

function pip-save() {
    for pkg in [email protected]; do
        pip install "$pkg" && {
            name="$(pip show "$pkg" | grep Name: | awk '{print $2}')";
            version="$(pip show "$pkg" | grep Version: | awk '{print $2}')";
            echo "${name}==${version}" >> requirements.txt;
        }
    done
}

Это сохраняет имя канонического пакета для требований, а также версию, установленную. Пример использования;

$ pip-save channels asgi_redis
# will save the following to requirements.txt (as of writing):
# ---
# channels==1.0.1
# asgi-redis==1.0.0
# ---
# note how asgi_redis is translated to its canonical name `asgi-redis`