微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

即使已经安装了最新版本,为什么还要 pip install --upgrade 重新安装软件包? 案例 - I案例 - II

如何解决即使已经安装了最新版本,为什么还要 pip install --upgrade 重新安装软件包? 案例 - I案例 - II

我编写了一个脚本来自动更新已安装的 python 包。该脚本每次在应用程序启动时运行,并确保如果有新的 python 包版本可用,它会下载并安装它。我在脚本中使用以下行来实现这一点 -

案例 - I

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)

案例 - II

但是,如果我将命令修改为 -

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

我想避免/覆盖 Case-II 的行为,并期望输出与 Case-I 中的一样。 对此问题有什么解决方案或更好的方法吗?

解决方法

另一种(更简单的 IMO)方法是简单地使用 virtualenv 本身中的 pip 可执行文件。

path\to\target_dir\Scripts\pip install --upgrade  my_pyPackage
,

谢谢@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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。