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 が 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
ルート ユーザーに切り替え、任意のフォルダーに 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
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 は、第三者の連絡先情報の正確性を保証しません。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示