本文可帮助你解决尝试使用 Python 模块运行 mssql-conf
安装程序时发生的错误。 本文还介绍了 Linux 上的 Microsoft SQL Server 的 Python 要求,如果在尝试配置Linux 上的 SQL Server时使用的是早期 Python 版本,请提供解决方法。
适用于:Linux 上的 SQL Server 2019
现象
安装 Microsoft SQL Server 2019 后尝试运行 mssql-conf
安装程序时,如果使用低于 3.5 的 Python 版本,将收到“模块对象没有属性运行”错误消息。
请考虑下列情形:
按照Linux 上的 SQL Server安装指南中的步骤安装Linux 上的 SQL Server。
尝试运行
/opt/mssql/bin/mssql-conf
安装程序。 但是,你将体验模块依赖项:
testslesvm2:~ # /opt/mssql/bin/mssql-conf setup
Traceback (most recent call last):
File "/opt/mssql/bin/../lib/mssql-conf/mssql-conf.py", line 17, in <module>
import mssqlad
File "/opt/mssql/lib/mssql-conf/mssqlad.py", line 15, in <module>
import pyadutil
File "/opt/mssql/lib/mssql-conf/pyadutil.py", line 6, in <module>
import typing
ImportError: No module named 'typing'
即使修复了“键入”模块依赖项问题,也可能收到以下错误消息:
testslesvm2:~ # /opt/mssql/bin/mssql-conf setup
Warning: could not create log file for mssql-conf at /var/opt/mssql/log/mssql-conf/mssql-conf.log.
Traceback (most recent call last):
File "/opt/mssql/bin/../lib/mssql-conf/mssql-conf.py", line 597, in <module>
main()
File "/opt/mssql/bin/../lib/mssql-conf/mssql-conf.py", line 593, in main
processCommands()
File "/opt/mssql/bin/../lib/mssql-conf/mssql-conf.py", line 310, in processCommands
COMMAND_TABLE[args.which]()
File "/opt/mssql/bin/../lib/mssql-conf/mssql-conf.py", line 93, in handleSetup
mssqlconfhelper.setupSqlServer(eulaAccepted, noprompt=args.noprompt)
File "/opt/mssql/lib/mssql-conf/mssqlconfhelper.py", line 964, in setupSqlServer
if not checkInstall():
File "/opt/mssql/lib/mssql-conf/mssqlconfhelper.py", line 934, in checkInstall
return runScript(checkInstallScript, runAsRoot) == 0
File "/opt/mssql/lib/mssql-conf/mssqlconfhelper.py", line 915, in runScript
process = subprocess.run([pathToScript], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
AttributeError: 'module' object has no attribute 'run'
注意
Linux 上的 Microsoft SQL Servermssql-conf
支持的平台(RHEL、SLES、Ubuntu)包含 Python 3 或其他版本低于 3.5 的系统上,可能会出现安装错误。 有关Linux 上的 SQL Server支持的平台的详细信息,请参阅受支持的平台。
原因
发生此错误的原因是 SQL Server 2019 和 mssql-conf
代码依赖于 Python 3.5+ 函数。
解决方法
有两个选项可用于解决此问题:
将 Python 3 升级到 3.5 或更高版本。 设置系统,以便在运行
/usr/bin/env python3 -V
命令时指向 Python 3.5 或 3.5+。注意: 我们观察到,某些依赖于早于 3.5 的 Python 版本的系统函数在此升级后停止工作。 若要避免此问题,请使用下一个选项。
在会话中创建一个符号链接,该链接将 Python 3 指向 Python 3.5 或 3.5+,然后运行
mssql-conf
命令来配置 SQL Server。 有关详细信息,请参阅下一节。
创建 Python 3 的符号链接(软链接)
按照以下步骤创建会话特定的符号链接,其中 Python 3 指向 Python 3.5 或更高版本,然后运行 mssql-conf
安装程序。
安装 Python 3.5 或更高版本。 在此示例中,安装 Python 3.6:
zypper in python36
安装 SQL Server。
sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/12/mssql-server-2019.repo sudo zypper --gpg-auto-import-keys refresh sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo zypper install -y mssql-server
切换到根用户,在任何文件夹中创建符号链接,然后将当前路径
$PATH
添加到 。 例如, /usr/bin/env python3 -V 符号链接指向 Python 3.6 而不是 Python 3.4,如以下代码片段所示:$sudo su testslesvm2:~ #:> sudo ln -s /usr/bin/python3.6 python3 testslesvm2:~ # > PATH=$(pwd):$PATH testslesvm2:~ # ll total 4 -rw------- 1 root root 982 Feb 9 20:03 .bash_history drwx------ 2 root root 111 Jan 26 08:50 .gnupg drwx------ 2 root root 29 Feb 9 19:27 .ssh drwxr-xr-x 2 root root 6 Jun 27 2017 bin lrwxrwxrwx 1 root root 18 Feb 9 19:47 python3 -> /usr/bin/python3.6 testslesvm2:~ # /usr/bin/env python3 -V Python 3.6.15
mssql-conf
运行安装程序或任何其他mssql-conf
基于命令:/opt/mssql/bin/mssql-conf setup
若要将来运行
mssql-conf
该命令来配置 SQL Server,请切换到根用户,然后运行PATH=$(pwd):$PATH
该命令,将当前路径添加到$PATH
环境变量。 然后,运行mssql-conf
命令,如步骤 4 所示。
另请参阅
由于 Python 3.4 已达到其 EOL(生命周期结束)状态,不再收到安全更新,因此建议使用受支持的较新版本的 Python。 有关详细信息,请参阅 Python | endoflife.date。
第三方联系人免责声明
Microsoft 会提供第三方联系信息来帮助你查找有关本主题的其他信息。 此联系信息可能会更改,恕不另行通知。 Microsoft 不保证第三方联系信息的准确性。