이 문서는 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 버전을 사용하는 경우 "모듈 개체에 특성이 실행되지 않음" 오류 메시지가 표시됩니다.
다음 시나리오를 고려하세요.
Sql Server on Linux에 대한 설치 지침의 단계에 따라 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+를 가리키도록 시스템을 설정합니다.참고: 3.5 이전의 Python 버전을 사용하는 일부 시스템 함수는 이 업그레이드 후에 작동이 중지되는 것으로 확인되었습니다. 이 문제를 방지하려면 다음 옵션을 사용합니다.
세션에서 Python 3을 Python 3.5 또는 3.5 이상으로 가리키는 symlink를 만든 다음, 명령을 실행
mssql-conf하여 SQL Server를 구성합니다. 자세한 내용은 다음 섹션을 참조하세요.
Python 3의 symlink(소프트 링크) 만들기
다음 단계에 따라 Python 3이 Python 3.5 이상 버전을 가리키는 세션별 symlink를 만든 다음 설치 프로그램을 실행합니다 mssql-conf .
Python 3.5 이상 버전을 설치합니다. 이 예제에서는 Python 3.6을 설치합니다.
zypper in python36SQL 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.15mssql-conf설치 또는 기타mssql-conf기반 명령을 실행합니다./opt/mssql/bin/mssql-conf setup나중에 명령을 실행
mssql-conf하여 SQL Server를 구성하려면 루트 사용자로 전환한 다음 명령을 실행PATH=$(pwd):$PATH하여 환경 변수에 현재 경로를$PATH추가합니다. 그런 다음, 4단계와mssql-conf같이 명령을 실행합니다.
참고 항목
Python 3.4는 이미 EOL(수명 종료) 상태에 도달했으며 더 이상 보안 업데이트를 받지 않으므로 지원되는 최신 버전의 Python을 사용하는 것이 좋습니다. 자세한 내용은 Python | endoflife.date를 참조하세요.
타사 연락처 고지
이 문서에 포함된 타사의 연락처 정보는 이 항목에 대한 추가 정보를 찾는 데 도움을 주기 위한 것입니다. 이 연락처 정보는 공지 없이 변경될 수 있습니다. Microsoft는 타사 연락처 정보의 정확성을 보증하지 않습니다.