我最近在使用想要记录到某处pip
的-I
标志时遇到问题:
-I
将不卸载继续之前的现有的包; 它将仅安装在旧版本的顶部。这意味着应将两个版本之间应删除的所有文件保留在原处。如果这些文件与其他已安装模块共享名称,则可能导致奇怪的行为。
例如,假设有一个名为的软件包package
。在的一个package
文件中,他们使用import datetime
。现在,在中package@2.0.0
,它指向标准库datetime
模块,但是在中package@3.0.0
,他们添加了本地语言datetime.py
以替代标准库版本(无论出于何种原因)。
现在说我跑步pip install package==3.0.0
,但后来意识到我实际上想要版本2.0.0
。如果我现在运行pip install -I package==2.0.0
,旧datetime.py
文件将不会被删除,因此任何调用import datetime
都会导入错误的模块。
就我而言,这表现为奇怪的语法错误,因为该软件包的较新版本添加了仅与Python 3兼容的文件,并且当我将软件包版本降级以支持Python 2时,我继续导入仅Python-3模块。
基于此,我认为-I
在更新已安装的软件包版本时,总是比使用旧软件包更可取。
pip install MySQL_python==1.8.9