Share via


Python モジュールを使用した mssql-conf セットアップでの "Module オブジェクトに属性の実行がありません" エラー

この記事は、Python モジュールを使用してセットアップを実行 mssql-conf しようとしたときに発生するエラーを解決するのに役立ちます。 この記事では、Microsoft SQL Server on Linuxの Python 要件についても説明し、SQL Server on Linuxを構成するときに初期の Python バージョンを使用している場合の回避策についても説明します。

適用対象: Linux SQL Server 2019

現象

Microsoft SQL Server 2019 をインストールした後でセットアップを実行mssql-confしようとすると、3.5 より前の Python バージョンを使用している場合は、"module object has no attribute run" というエラー メッセージが表示されます。

次のようなシナリオを考えてみましょう。

  • SQL Server on Linuxのインストール ガイダンスの手順に従って、SQL Server on Linuxをインストールします。

  • セットアップを実行 /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、Microsoft SQL Server on Linuxサポートされているプラットフォーム (RHEL、SLES、Ubuntu) に Python 3 または 3.5 より前の別のバージョンが含まれているシステムで発生する可能性があります。 SQL Server on Linuxサポートされているプラットフォームの詳細については、「サポートされているプラットフォーム」を参照してください。

原因

このエラーは、SQL Server 2019 とmssql-confコードが Python 3.5 以降の関数に依存しているために発生します。

回避策

この問題を回避するには、次の 2 つのオプションがあります。

  • 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.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. ルート ユーザーに切り替え、任意のフォルダーに symlink を作成し、現在のパスを に $PATH追加します。 たとえば、 /usr/bin/env python3 -V symlink は、次のコード スニペットに示すように、Python 3.4 ではなく Python 3.6 を指します。

    $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 は、第三者の連絡先情報の正確性を保証しません。