Python 모듈을 사용하는 mssql-conf 설정에서 "Module 개체에 특성 실행 없음" 오류

이 문서는 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 버전을 사용하는 경우 "모듈 개체에 특성이 실행되지 않음" 오류 메시지가 표시됩니다.

다음 시나리오를 고려하세요.

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+를 가리키도록 시스템을 설정합니다.

    참고: 3.5 이전의 Python 버전을 사용하는 일부 시스템 함수는 이 업그레이드 후에 작동이 중지되는 것으로 확인되었습니다. 이 문제를 방지하려면 다음 옵션을 사용합니다.

  • 세션에서 Python 3을 Python 3.5 또는 3.5 이상으로 가리키는 symlink를 만든 다음, 명령을 실행 mssql-conf 하여 SQL Server를 구성합니다. 자세한 내용은 다음 섹션을 참조하세요.

다음 단계에 따라 Python 3이 Python 3.5 이상 버전을 가리키는 세션별 symlink를 만든 다음 설치 프로그램을 실행합니다 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 추가합니다. 그런 다음, 4단계와 mssql-conf 같이 명령을 실행합니다.

참고 항목

Python 3.4는 이미 EOL(수명 종료) 상태에 도달했으며 더 이상 보안 업데이트를 받지 않으므로 지원되는 최신 버전의 Python을 사용하는 것이 좋습니다. 자세한 내용은 Python | endoflife.date를 참조하세요.

타사 연락처 고지

이 문서에 포함된 타사의 연락처 정보는 이 항목에 대한 추가 정보를 찾는 데 도움을 주기 위한 것입니다. 이 연락처 정보는 공지 없이 변경될 수 있습니다. Microsoft는 타사 연락처 정보의 정확성을 보증하지 않습니다.