安装一个包并用pip写入requirements.txt

2024-05-18 15:21:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找使用pip安装包的方法,并将该包的版本信息写入到我的项目requirements.txt文件中。对于熟悉npm的人来说,这基本上就是npm install --save所做的。

使用pip freeze > requirements.txt效果很好,但我发现我忘记运行它,或者我可能会意外地包含未使用的包,这些包是我为测试而安装的,但决定不使用。

所以下面的psuedocode:

$ pip install nose2 --save

将生成一个requirements.txt文件,其中包含:

nose2==0.4.7

我想我可以通过咀嚼save的输出来获取版本号,但我希望有一个更简单的方法。


Tags: installpip文件项目方法txtnpmsave
3条回答

我已经编写了下面的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`

要获得版本信息,实际上可以在安装后有选择地使用pip freeze。下面是一个函数,它应该满足您的要求:

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 like

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

在.bashrc或.bash_配置文件中,使用pips命令安装包并将其名称保存到requirements.txt中 示例:

pips django-waffle

基于Akash Kothawale的评论:)

相关问题 更多 >

    热门问题