共用方式為


使用 Python 模組的 mssql-conf 安裝程式發生「模組對象沒有屬性執行」錯誤

本文可協助您解決嘗試使用 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.5 或更新版本,然後執行 mssql-conf 安裝程式。

  1. 安裝 Python 3.5 或更新版本。 在此範例中,安裝 Python 3.6:

    zypper in python36
    
  2. 安裝 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
    
  3. 切換到根使用者、在任何資料夾中建立符號連結,然後將目前的路徑新增至 $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
    
  4. mssql-conf執行安裝程式或任何其他mssql-conf型命令:

    /opt/mssql/bin/mssql-conf setup
    
  5. 如果您想要在未來執行 mssql-conf 命令來設定 SQL Server,請切換至根使用者,然後執行 PATH=$(pwd):$PATH 命令,將目前的路徑新增至 $PATH 環境變數。 然後,執行 mssql-conf 命令,如步驟 4 所示。

另請參閱

由於 Python 3.4 已達到其 EOL(生命週期結束)狀態,且不再收到安全性更新,因此建議您使用支援的較新版本 Python。 如需詳細資訊,請參閱 Python | endoflife.date

協力廠商連絡資訊免責聲明

Microsoft 提供協力廠商連絡資訊,以協助您尋找有關此主題的其他資訊。 此連絡資訊可能會變更而不另行通知。 Microsoft 不保證協力廠商連絡資訊的準確性。