簡體   English   中英

安裝包並使用pip寫入requirements.txt

[英]Install a package and write to requirements.txt with pip

我正在尋找一種使用pip安裝包的方法,並將該包的版本信息寫入我的項目的requirements.txt文件。 對於那些熟悉npm的人來說 ,它本質上就是npm install --save所做的。

使用pip freeze > requirements.txt工作得很好,但我發現我忘了運行它,或者我可能會意外地包含我為測試而安裝但未決定使用的未使用的軟件包。

所以下面的偽代碼:

$ pip install nose2 --save

會導致一個requirements.txt文件:

nose2==0.4.7

我想我可以使用save的輸出來獲取版本號,但我希望有一種更簡單的方法。

要獲取版本信息,您可以在安裝后有選擇地使用pip凍結。 這是一個應該滿足您要求的功能:

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
}

請注意grep命令的-i。 Pip與包名稱不區分大小寫,因此您可能需要它。

只需添加smth就好

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

到.bashrc或.bash_profile並使用pips命令安裝包並將其名稱保存到requirements.txt示例:

pips django-waffle

基於Akash Kothawale評論:)

我編寫了以下使用的bash函數;

function pip-save() {
    for pkg in $@; 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`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM