Udostępnij przez


Błąd "Obiekt modułu nie ma uruchomienia atrybutu" w konfiguracji mssql-conf przy użyciu modułu języka Python

Ten artykuł ułatwia rozwiązanie błędu występującego podczas próby uruchomienia mssql-conf instalatora przy użyciu modułu języka Python. W tym artykule opisano również wymagania języka Python dotyczące programu Microsoft SQL Server w systemie Linux i przedstawiono obejście problemu, jeśli używasz wczesnej wersji języka Python podczas próby skonfigurowania programu SQL Server w systemie Linux.

Dotyczy: SQL Server 2019 w systemie Linux

Symptomy

Podczas próby uruchomienia mssql-conf instalatora po zainstalowaniu programu Microsoft SQL Server 2019 zostanie wyświetlony komunikat o błędzie "Obiekt modułu nie ma uruchomienia atrybutu", jeśli używasz wersji języka Python starszej niż 3,5.

Rozważ następujące scenariusze:

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'

Po rozwiązaniu problemu z zależnością modułu "wpisywanie" może również zostać wyświetlony następujący komunikat o błędzie:

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'

Uwaga 16.

Błąd mssql-conf instalacji może wystąpić w systemach, w których program Microsoft SQL Server na platformie obsługiwanej przez system Linux (RHEL, SLES, Ubuntu) zawiera środowisko Python 3 lub inną wersję, która jest starsza niż 3.5. Aby uzyskać więcej informacji na temat programu SQL Server na platformach obsługiwanych przez system Linux, zobacz Obsługiwane platformy.

Przyczyna

Ten błąd występuje, ponieważ program SQL Server 2019 i mssql-conf kod korzystają z funkcji języka Python w wersji 3.5 lub nowszej.

Rozwiązanie

Istnieją dwie opcje obejścia tego problemu:

  • Uaktualnij środowisko Python 3 do wersji 3.5 lub nowszej. Ustaw system, aby po uruchomieniu /usr/bin/env python3 -V polecenia wskazywać język Python w wersji 3.5 lub 3.5 lub nowszej.

    Uwaga: zauważyliśmy, że niektóre funkcje systemowe, które korzystają z wersji języka Python starszych niż 3,5, przestają działać po tym uaktualnieniu. Aby uniknąć tego problemu, użyj następnej opcji.

  • Utwórz symlink w sesji, który wskazuje język Python 3 na język Python 3.5 lub 3.5 lub nowszy, a następnie uruchom mssql-conf polecenia w celu skonfigurowania programu SQL Server. Aby uzyskać więcej informacji, zapoznaj się z następną sekcją.

Wykonaj następujące kroki, aby utworzyć link specyficzny dla sesji, w którym język Python 3 wskazuje język Python 3.5 lub nowszą wersję, a następnie uruchom mssql-conf instalatora.

  1. Zainstaluj środowisko Python w wersji 3.5 lub nowszej. W tym przykładzie zainstaluj język Python 3.6:

    zypper in python36
    
  2. Zainstaluj program 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. Przejdź do użytkownika głównego, utwórz link symlinku w dowolnym folderze, a następnie dodaj bieżącą ścieżkę do $PATH. Na przykład /usr/bin/env python3 -V symlink wskazuje język Python 3.6 zamiast python 3.4, jak pokazano w poniższym fragmencie kodu:

    $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 Uruchom instalatora lub inne mssql-confpolecenia oparte na:

    /opt/mssql/bin/mssql-conf setup
    
  5. Jeśli chcesz uruchomić polecenie mssql-conf w przyszłości w celu skonfigurowania programu SQL Server, przełącz się do użytkownika głównego, a następnie uruchom PATH=$(pwd):$PATH polecenie , aby dodać bieżącą ścieżkę do zmiennej środowiskowej $PATH . Następnie uruchom mssql-conf polecenie, jak pokazano w kroku 4.

Zobacz też

Ponieważ język Python 3.4 osiągnął już stan EOL (koniec życia) i nie będzie już otrzymywać aktualizacji zabezpieczeń, zalecamy użycie obsługiwanej, nowszej wersji języka Python. Aby uzyskać więcej informacji, zobacz Python | endoflife.date.

Wyłączenie odpowiedzialności za kontakty z osobami trzecimi

Firma Microsoft udostępnia informacje kontaktowe innych firm, aby uzyskać dodatkowe informacje na temat tego tematu. Informacje te mogą zostać zmienione bez powiadomienia. Firma Microsoft nie gwarantuje dokładności informacji kontaktowych innych firm.