SQL Server 2017 MLS和pip-无法卸载<package>:“这是一个distutils安装的项目”

时间:2020-11-02 10:11:15

标签: sql-server python-3.x

我知道我的问题和外面的其他问题类似,但是也很不一样。

我有在SQL 2017 CU16机器学习服务(MLS)下安装的python 3.5.2。

当尝试将scikit-learn从其供应商安装的0.18升级到0.22时,我收到消息 “这是一个distutils安装的项目,因此我们无法准确确定属于该文件的文件,这只会导致部分卸载。”

我可以在Windows目录中寻找scikit-learn的所有实例并将其删除,但是我认为这是个坏主意,而且我对在Windows中如何安装python软件包没有真正的概念,所以我怀疑我的程序包在Windows中某个位置的深处注册,但我不确定在哪里。

问题在于,我们的数据科学家现在希望提高scikit-learn软件包的价值,当然他们不能这样做,除非我能弄清楚如何彻底卸载scikit-learn并使用pip安装新软件包。

我什至进行了全新安装,并且正在运行pip 9.x,并尝试通过pip删除软件包并收到以下消息:

“弃用:不建议卸载distutils安装的项目(scikit-learn),并且在以后的版本中将其删除。这是由于卸载distutils项目只会部分卸载该项目。

一个选择是,由于应用了SQL 2017 CU22,我们最近与现有的python 3.5.2并排安装了python 3.7.1,但是稍后当我想要升级初始安装的软件包时,可能会遇到相同的问题安装过程。这似乎是SQL 2017 MLS的一个重大缺陷,因为您无法运行什么python软件就锁定了它,这不是很灵活。

我想知道是否有一种方法可以阻止某些软件包在初始SQL 2017 MLS安装过程中(例如scikit-learn)作为安装过程的一部分,因此可以在以后安装。

非常感谢您的帮助...

1 个答案:

答案 0 :(得分:0)

当 SQL 2017 MLS 进行初始安装时,它充当包管理器。因此,当 Pip 出现并尝试更新 distutil 包时,这些包不会将 Pip 识别为有权更新这些包。

这也有效地意味着 MLS 对任何“distutils 锁定”的软件包都有严格的限制,并且这些特定的软件包 100% 不可更新。如果需要更新这些包,这可能会影响您的应用程序。

可能这意味着如果您需要根据需要更新任何包,可以使用一个可以 100% 更新的单独的非 MS python 堆栈。

相关问题