首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Python包添加到Server 2017机器学习服务中会破坏它

将Python包添加到Server 2017机器学习服务中会破坏它
EN

Database Administration用户
提问于 2020-08-25 06:54:02
回答 1查看 985关注 0票数 0

我正在尝试开始使用在Server 2017中运行python。

它可以开箱即用,我可以运行简单的脚本,如列出已安装的包:

代码语言:javascript
复制
EXEC sp_execute_external_script 
@language = N'Python',
@script = N'import pkg_resources
print([p.project_name for p in pkg_resources.working_set])'

当我想要添加一个新的包时,我遵循微软2017年的文档:https://learn.microsoft.com/en-us/sql/machine-learning/package-management/install-python-packages-standard-tools?view=sql-server-2017,它说,基本上只需安装新包。因此,我转到安装:

代码语言:javascript
复制
C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES

然后跑:

代码语言:javascript
复制
scripts\pip.exe install pyarrow

这会将升级后的numpy版本作为依赖项安装,然后尝试调用像上面这样简单的python脚本时,会得到以下错误:

代码语言:javascript
复制
Msg 39012, Level 16, State 1, Line 0
Unable to communicate with the runtime for 'Python' script. Please check the requirements of 'Python' runtime.

当numpy在这个更新的版本中时,什么都不会运行。我可以通过从安装媒体修复Server安装来解决这个问题,但这使我回到了我的初始安装程序,而没有所需的py箭头包。

在试图排除故障后(包括。安装特定版本的熊猫和numpy)我现在不能回到工作状态与修理-将尝试卸载和重新安装的功能。

我可以看到,在Server 2019 (https://learn.microsoft.com/en-us/sql/machine-learning/package-management/install-additional-python-packages-on-sql-server?view=sql-server-ver15)中安装python包的过程已经发生了变化,所以在2017年可能会出现一些缺陷,但我在任何地方都找不到它的文档。

我运行最新的Server 2017 (cu21)开发人员版本。

一些嫌疑人:

  • 我不太熟悉,但它在多个地方说,Server 2017机器学习服务与Conda一起提供,我不确定Conda和pip是否兼容?
  • 这个错误意味着microsofts对熊猫的依赖,以及熊猫对numpy的依赖。

当前全错误:

代码语言:javascript
复制
Msg 39012, Level 16, State 1, Line 0
Unable to communicate with the runtime for 'Python' script. Please check the requirements of 'Python' runtime.
STDERR message(s) from external script: 
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\lib\site-packages\revoscalepy\__init__.py", line 99, in <module>
    from .RxSerializable import RxMissingValues
  File "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\lib\site-packages\revoscalepy\RxSerializable.py", line 10, in <module>
    from pandas import DataFrame
  File "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\lib\site-packages\pandas\__init__.py", line 39, in <module>
    from pandas.core.api import *
  File "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\lib\site-packages\pandas\core\api.py", line 10, in <module>
    from pandas.core.groupby import Grouper

STDERR message(s) from external script: 
  File "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\lib\site-packages\pandas\core\groupby\__init__.py", line 1, in <module>
    from pandas.core.groupby.groupby import GroupBy  # noqa: F401
  File "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\lib\site-packages\pandas\core\groupby\groupby.py", line 25, in <module>
    from pandas.util._validators import validate_kwargs
  File "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\lib\site-packages\pandas\util\_validators.py", line 7, in <module>
    from pandas.core.dtypes.common import is_bool
  File "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\lib\site-packages\pandas\core\dtypes\common.py", line 10, in <module>
    from pandas.core.dtypes.dtypes import (

STDERR message(s) from external script: 
  File "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\lib\site-packages\pandas\core\dtypes\dtypes.py", line 16, in <module>
    from .inference import is_list_like
  File "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\lib\site-packages\pandas\core\dtypes\inference.py", line 9, in <module>
    from pandas.compat import (
ImportError: cannot import name 'Set'


Completion time: 2020-08-25T09:43:23.9780283+02:00
EN

回答 1

Database Administration用户

发布于 2020-11-10 05:08:38

与您收到的ImportError消息相同,Server 2017上的熊猫模块也有相同的问题。这个问题最近出现在为Server 2017安装CU22之后,当我在大约两个月前设置这个环境时,这个问题并不存在。

在环境的设置中,我执行了numpy和熊猫模块升级到Python 3.5.2的最新可用版本(这是Server 2017包含的默认Python版本):

  • numpy:
    • 预装版本: 1.12.1
    • 更新版本: 1.18.5

  • 熊猫:
    • 预装版本: 0.19.2
    • 更新版本: 0.24.2

升级的原因是来自其他模块的要求(关于numpy),以及熊猫和新的numpy版本之间的兼容性问题。

在执行导入熊猫时收到ImportError错误消息后,我将其精确定位到文件中的第9-10行:

Server\MSSQL14.\PYTHON_SERVICES\Lib\site-packages\pandas\core\dtypes C:\Program\Microsoft

from pandas.compat import ( PY2, Set, re_type, string_and_binary_types, string_types, text_type) 由于我找不到任何理由,也没有从微软那里找到任何理由来说明为什么要停止工作,所以我做了一些研究,并发现这篇文章来自于熊猫Github项目: 缺少对大熊猫的必需依赖关系['numpy'] 0.24.1 #25316 看起来,numpy和熊猫模块的旧版本可能会出现问题,尽管它们应该由pip.exe在模块升级/安装过程中删除。 公平地说,我多次卸载了熊猫和numpy模块,直到pip.exe不再报告任何已安装的版本,相关目录也从Lib\site软件包中删除。 Set-Location 'C:\Program Files\Microsoft SQL Server\MSSQL14.instance_name\PYTHON_SERVICES\Scripts' & '.\pip.exe' uninstall pandas # repeated 2 times & '.\pip.exe' uninstall numpy # repeated 2 times 在这两种情况下,模块原始版本的更新部分和其余部分都被删除了。 然后我重新安装了两个模块,之后没有问题: & '.\pip.exe' install --upgrade numpy & '.\pip.exe' install --upgrade pandas

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/274283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档