为什么 pip install --upgrade 重新安装包即使最新版本已经安装?
Why pip install --upgrade reinstalling package even if latest version already installed?
我写了一个脚本来自动更新安装的 python 包。此脚本每次都在应用程序启动时运行,并确保如果有新的 python 软件包版本可用,它会下载并安装它。我在我的脚本中使用以下行来实现这个 -
案例-我
python -m pip install --upgrade my_pyPackage
上面的脚本运行得很好。如果软件包已经安装,它会给出以下输出 -
Looking in indexes: <pypi_artifactory_url>
Requirement already satisfied: my_pyPackage in c:\path\to\site-packages (4.0.3)
案例二
但是,如果我将命令修改为 -
python -m pip install --upgrade my_pyPackage --target <path\to\custom\dir>
如果有新版本可用,此脚本可以正常工作。但是,即使新版本不可用,pip 也会一次又一次地将缓存版本安装到目标目录中。
输出如下 -
Looking in indexes: <pypi_artifactory_url>
Collecting my_pyPackege
Using cached my_pyPackege-4.0.3-py3-none-any.whl
Installing collected packages: my_pyPackege
Successfully installed my_pyPackege-4.0.3
我想要 avoid/override Case-II 的行为并期望输出与 Case-I 中的一样。
这个问题有什么解决方案或更好的方法吗?
感谢@sinoroc
用下面的行替换 python -m pip install--upgrade my_pyPackage --target ...
解决了我的问题。
python -m venv target_dir_name path\to\target_dir
path\to\target_dir\Scripts\activate.bat
python -m pip install --upgrade my_pyPackage
path\to\target_dir\Scripts\deactivate.bat
另一种(更简单,IMO)方法是简单地使用 virtualenv 本身中的 pip 可执行文件。
path\to\target_dir\Scripts\pip install --upgrade my_pyPackage
我写了一个脚本来自动更新安装的 python 包。此脚本每次都在应用程序启动时运行,并确保如果有新的 python 软件包版本可用,它会下载并安装它。我在我的脚本中使用以下行来实现这个 -
案例-我
python -m pip install --upgrade my_pyPackage
上面的脚本运行得很好。如果软件包已经安装,它会给出以下输出 -
Looking in indexes: <pypi_artifactory_url>
Requirement already satisfied: my_pyPackage in c:\path\to\site-packages (4.0.3)
案例二
但是,如果我将命令修改为 -
python -m pip install --upgrade my_pyPackage --target <path\to\custom\dir>
如果有新版本可用,此脚本可以正常工作。但是,即使新版本不可用,pip 也会一次又一次地将缓存版本安装到目标目录中。
输出如下 -
Looking in indexes: <pypi_artifactory_url>
Collecting my_pyPackege
Using cached my_pyPackege-4.0.3-py3-none-any.whl
Installing collected packages: my_pyPackege
Successfully installed my_pyPackege-4.0.3
我想要 avoid/override Case-II 的行为并期望输出与 Case-I 中的一样。 这个问题有什么解决方案或更好的方法吗?
感谢@sinoroc
用下面的行替换 python -m pip install--upgrade my_pyPackage --target ...
解决了我的问题。
python -m venv target_dir_name path\to\target_dir
path\to\target_dir\Scripts\activate.bat
python -m pip install --upgrade my_pyPackage
path\to\target_dir\Scripts\deactivate.bat
另一种(更简单,IMO)方法是简单地使用 virtualenv 本身中的 pip 可执行文件。
path\to\target_dir\Scripts\pip install --upgrade my_pyPackage