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



我知道我的问题与其他问题相似,但也有点不同。

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

当尝试升级scikit时,请向其供应商安装的0.18到0.22的级别学习,我得到了以下消息"这是一个安装了distutils的项目,因此我们无法准确确定哪些文件属于它,这只会导致部分卸载">

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

问题是,我们的数据科学家现在想增加scikit学习包的值,当然他们不能,除非我能想出如何使用pip干净地卸载scikit学习并安装新包。

我甚至做了一个干净的安装,运行pip9.x,并试图通过pip删除包,得到了这样的消息:

"弃用:卸载distutils安装的项目(scikit learn(已被弃用,并将在未来版本中删除。这是因为卸载distutils项目只会部分卸载该项目。

一种选择是,由于应用了SQL 2017 CU22,我们最近将python 3.7.1与现有的python 3.5.2并排安装,但当我想升级通过初始安装过程安装的软件包时,可能会遇到同样的问题。这似乎是SQL 2017 MLS的一个重大缺点,因为你被锁定在可以运行的python软件方面,这不是很灵活。

我想知道是否有一种方法可以阻止某些包作为初始SQL 2017 MLS安装过程的一部分进行安装,比如scikit learn,以便稍后安装。

非常感谢您的帮助。。。

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

这也有效地意味着MLS对任何封装都有严格的限制;distutils locked";并且这些特定包是100%不可更新的。如果应用程序需要更新这些程序包,这可能会影响应用程序。

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

最新更新