本文可協助您解決嘗試使用 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'
注意
mssql-conf Linux 上的 Microsoft SQL Server 支援的平臺 (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+ 。注意: 我們發現某些依賴 Python 版本且早於 3.5 的系統函式在此升級后停止運作。 若要避免這個問題,請使用下一個選項。
在您的會話中建立符號連結,將 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.15mssql-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 不保證協力廠商連絡資訊的準確性。