更新所有不是来自conda的pip软件包

在我的Windows 7系统上,我尝试使用conda安装许多软件包。 这些很容易更新

conda update all 

不幸的是一些软件包不会出现在conda中,但是可以通过pip获得,所以我使用pip来安装它们。 更新窗口上的所有点子包似乎更困难,但

 for /F "delims===" %i in ('pip freeze -l') do pip install -U %i 

是我find的一种方法。

然而,这试图更新所有的软件包,甚至那些conda我相信安装。

有没有办法更新只有通过点安装的软件包?

Solutions Collecting From Web of "更新所有不是来自conda的pip软件包"

这里是我的一个shell脚本的尝试,它将解析conda env export并升级任何PIP包:

 #!/bin/sh ############################################################################### # Script to scan an Anaconda environment and upgrade any PIP packages. # # Usage: # $ ./upgrade_pip_packages.sh # or explicitly give it an environment file to parse: # $ ./upgrade_pip_packages.sh <environment.yml file> # # Author: Marijn van Vliet <wmvanvliet@gmail.com> # # Version: 1.0 (29-09-2017) # - Initial version of the script. # Check for optional command line argument if [ "$#" = 0 ] then ENV_OUTPUT=`conda env export` elif [ "$#" = 1 ] then ENV_OUTPUT=`cat $1` else echo "Usage: $0 [environment file]" >&2 exit 1 fi PIP=0 # Whether we are parsing PIP packages IFS=$'\n' # Split on newlines PIP_PACKAGES="" # PIP packages found thus far # Loop over the output of "conda env export" for line in $ENV_OUTPUT do # Don't do anything until we get to the packages installed by PIP if [ "$line" = "- pip:" ] then PIP=1 # From this point, start doing things. elif [[ "$line" = prefix:* ]] then PIP=0 # End of PIP package list. Stop doing things. elif [ $PIP = 1 ] then # Packages are listed as " - name==version==python_version" # This is a regular expression that matches only the name and # strips quotes in git URLs: REGEXP='^ - "\?\([^="]*\)"\?.*$' # Find PIP package name (or git URL) PIP_PACKAGES="$PIP_PACKAGES `echo "$line" | sed -n "s/$REGEXP/\1/p"`" fi done # From now on, split on spaces IFS=' ' echo "The following packages are marked for upgrade using PIP:" echo for package in $PIP_PACKAGES do echo " - $package" done echo read -r -p "Shall we proceed with the upgrade? [y/N] " response case "$response" in [yY][eE][sS]|[yY]) # Upgrade each package for package in $PIP_PACKAGES do pip install --upgrade $package done ;; *) echo "Aborting" ;; esac 

这是棘手的,因为PIP包不同于conda包。 Anaconda将pip作为安装选项添加到环境中,但不管理它们。 皮普仍然没有一个简单的命令来升级所有,但一些建议是你尝试,这是另一个:

 pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs pip install -U