次の方法で共有


Python モジュールを使用した mssql-conf セットアップで "Module object has no attribute run" (モジュール オブジェクトに属性の実行がありません) エラーが表示される

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

適用対象: SQL Server 2019 on Linux

現象

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'

また、"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'

Note

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

原因

このエラーは、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. ルート ユーザーに切り替え、任意のフォルダーにシンボリック リンクを作成し、現在のパスを $PATHに追加します。 たとえば、次のコード スニペットに示すように、 /usr/bin/env python3 -V シンボリック リンクは 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 環境変数に追加します。 次に、手順 4 に示すように、 mssql-conf コマンドを実行します。

関連項目

Python 3.4 は既に EOL (有効期限) の状態に達しており、セキュリティ更新プログラムを受け取らなくなったため、サポートされている新しいバージョンの Python を使用することをお勧めします。 詳細については、「 Python | endoflife.dateを参照してください。

サードパーティのお問い合わせ窓口に関する免責事項

サードパーティのお問い合わせ窓口に関する情報は、ユーザーの便宜のために提供されているものであり、 この連絡先情報は、予告なしに変更される可能性があります。 マイクロソフトは、掲載されている情報に対して、いかなる責任も負わないものとします。