mssql-cli: Error when using mssql-cli with Python 3.10 latest version

Hi all, I’m writing this issue because I came across an error when using mssql-cli with the latest Pyton 3.10. Installation goes fine, however, when trying to run mssql-cli to connect to a local SQL Server instance, I got this:

PS C:\Users\Jorge> mssql-cli -S . -E
Traceback (most recent call last):
  File "C:\Python310\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Python310\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Python310\lib\site-packages\mssqlcli\main.py", line 122, in <module>
    main()
  File "C:\Python310\lib\site-packages\mssqlcli\main.py", line 115, in main
    run_cli_with(mssqlcli_options)
  File "C:\Python310\lib\site-packages\mssqlcli\main.py", line 44, in run_cli_with
    from mssqlcli.mssql_cli import MssqlCli
  File "C:\Python310\lib\site-packages\mssqlcli\mssql_cli.py", line 14, in <module>
    from cli_helpers.tabular_output import TabularOutputFormatter
  File "C:\Python310\lib\site-packages\cli_helpers\tabular_output\__init__.py", line 11, in <module>
    from .output_formatter import format_output, TabularOutputFormatter
  File "C:\Python310\lib\site-packages\cli_helpers\tabular_output\output_formatter.py", line 10, in <module>
    from . import (delimited_output_adapter, vertical_table_adapter,
  File "C:\Python310\lib\site-packages\cli_helpers\tabular_output\tabulate_adapter.py", line 4, in <module>
    from cli_helpers.packages import tabulate
  File "C:\Python310\lib\site-packages\cli_helpers\packages\tabulate.py", line 6, in <module>
    from collections import namedtuple, Iterable
ImportError: cannot import name 'Iterable' from 'collections' (C:\Python310\lib\collections\__init__.py)

From what I understood, it looks like mssql-cli has a dependency on cli-helpers which in turn depends on some tabular packages and the one for tabulate.py can’t find the Iterable type in “collections”. Could this mean that the dependencies need to be updated?

I’m not a Python developer, my background is .NET, so I’m not sure how to solve this. For now I’m planning on going back to Python 3.9 which I think it could work, I just wanted to point this out.

Thanks for your help on this.

Regards, Jorge

About this issue

  • Original URL
  • State: open
  • Created 3 years ago
  • Reactions: 6
  • Comments: 18

Most upvoted comments

The following steps solved my problem.

pip install --upgrade cli_helpers

If that does not work, you can also upgrade tabulate:

pip install --upgrade tabulate

Also set the environment variable to your shell config file (believe you can also set it in mssqlrc but I haven’t tried it):

export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true

may also need to change the ‘mssql-cli’ bash file line 16 to python3.

Are you surprised how they simply ignore this and don’t want to fix it at all?

The following steps solved my problem.

pip install --upgrade cli_helpers

If that does not work, you can also upgrade tabulate:

pip install --upgrade tabulate

Also set the environment variable to your shell config file (believe you can also set it in mssqlrc but I haven’t tried it):

export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true

may also need to change the ‘mssql-cli’ bash file line 16 to python3.

pip install --upgrade cli_helpers worked for me on python 3.10.4

FYI this has already been fixed in code, it’s just there hasn’t been a release of this module in over 2 years 😕

tabulate was removed as a vendored package and added as a dependency. Perhaps you might want to upgrade cli_helpers package.

https://github.com/dbcli/cli_helpers/commit/a21650dd458d42936aa95ad41b8f676e81579b91

I have freshly installed Ubuntu 22.04 and canät get mssql-cli working. Previously I have successfully usd pyenv to get compatible version, but now I get: “No usable version of libssl was found”

If I try to install lib ssl with pipi install ssl it fails – I believe since package is not maintained and python has ssl internally included anyway.

Iäm out of ideas, since above people seem to be able to get mssql-cli running on 3.9.x versions. I’ve tried now 3.9.9. 3.9.5 and 3.5.5 under pyenv and with all the same issue about libssl.

Still have same problem from Ubuntu 22.04 on WSL on Windows11. No usable version of libssl was found

Still no support for Python 3.10? 3.11 is already out…

FYI this has already been fixed in code, it’s just there hasn’t been a release of this module in over 2 years 😕

Wondering if this is managed by Microsoft? What happens to the famous Microsoft management?

I hit the same thing - Python 3.10 on a Windows 10 machine got the following error:

ImportError: cannot import name 'Iterable' from 'collections' 

Installing Python 3.9.9 was the only way I could work around it.

Hi all, Just un update: I was able to install mssql-cli and using it correctly when using Python 3.9.7. So it looks like there is a compatibility issue between mssql-cli dependencies and Python 3.10 in Windows 10.

Regards, Jorge

Yep, using Python 3.9.9 works for me too!

Hi all, Just un update: I was able to install mssql-cli and using it correctly when using Python 3.9.7. So it looks like there is a compatibility issue between mssql-cli dependencies and Python 3.10 in Windows 10.

Regards, Jorge