有没有办法更新一个包,并递归地更新它使用的所有包?
Is there a way to update a package and, recursively, all the packages it uses?
我创建了一个包供内部使用。在我的安装文件中,我有类似的东西:
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 <strong>--recursive</strong> myutils
或类似的操作,以便 inner包也安装了吗?我能想到的唯一解决方法是以 package>=that_version.X.y.z
的形式定义最小包版本,但是 it does not seem to be the most recommended way to do it.
您可以在 Unix 上使用以下命令行强制升级所有已安装的软件包,如 OS
pip freeze | sed -r -e 's/([^=]+)==.*//' | xargs pip install --upgrade
pip 最近(几年前我检查了一下)更改了 --upgrade
的默认策略——它用于升级包和任何可传递的包,但改为只升级包
幸运的是,添加了一个控制此行为的新选项:--upgrade-strategy
要恢复旧的“升级一切”方法,您可以使用 pip install --upgrade --upgrade-strategy=eager PKG
(默认策略是 only-if-needed
)
我创建了一个包供内部使用。在我的安装文件中,我有类似的东西:
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 <strong>--recursive</strong> myutils
或类似的操作,以便 inner包也安装了吗?我能想到的唯一解决方法是以 package>=that_version.X.y.z
的形式定义最小包版本,但是 it does not seem to be the most recommended way to do it.
您可以在 Unix 上使用以下命令行强制升级所有已安装的软件包,如 OS
pip freeze | sed -r -e 's/([^=]+)==.*//' | xargs pip install --upgrade
pip 最近(几年前我检查了一下)更改了 --upgrade
的默认策略——它用于升级包和任何可传递的包,但改为只升级包
幸运的是,添加了一个控制此行为的新选项:--upgrade-strategy
要恢复旧的“升级一切”方法,您可以使用 pip install --upgrade --upgrade-strategy=eager PKG
(默认策略是 only-if-needed
)