我创建了一个供内部使用的软件包。在我的安装文件中,我有类似的内容:
from setuptools import setup, find_packages
setup(
name='myutils',
version='0.3',
description='Set of utils for these projects',
packages=find_packages(),
install_requires=[
'requests',
'arrow',
'slackclient'
]
)
它运行良好,并且可以顺利安装install_requires
中的所有软件包。
但是,有时其中一些软件包可能需要更新,因此我希望pip install --upgrade myutils
更新install_requires
中的软件包,而不需要。
是否可以执行某种pip install --upgrade --recursive myutils
或类似的方式,以便同时安装 inner 软件包?我能想到的唯一解决方法是以package>=that_version.X.y.z
的形式定义最低软件包版本,但以it does not seem to be the most recommended way to do it的形式定义。
答案 0 :(得分:1)
您可以在Unix等操作系统上使用以下命令行强制升级所有已安装的软件包
pip freeze | sed -r -e 's/([^=]+)==.*/\1/' | xargs pip install --upgrade
答案 1 :(得分:1)
最近(我几年前检查过),pip更改了--upgrade
的默认策略-它曾经用于升级软件包和所有传递软件包,但改为仅升级软件包
幸运的是,添加了一个新选项来控制此行为:--upgrade-strategy
要还原旧的“升级所有内容”方法,可以使用pip install --upgrade --upgrade-strategy=eager PKG
(默认策略为only-if-needed
)