Importerror: Cannot Import Name '_Unicodefun' from 'Click'

When running our lint checks with the Python Black package, an error comes up:

ImportError: cannot import name '_unicodefun' from 'click' (/Users/robot/.cache/pre-commit/repo3u71ccm2/py_env-python3.9/lib/python3.9/site-packages/click/init.py)`

In researching this, I found the following related issues:

How can I solve this problem? Is this a false positive from the linter? Do I need to modify my code?

2

2 Answers

This has been fixed by Black 22.3.0. Versions before that won't work with click 8.1.0.

Incompatible with click 8.1.0 (ImportError: cannot import name '_unicodefun' from 'click') #2964

E.g.: black.yml

          python-version: 3.8
      - name: install black
        run: |
-          pip install black==20.8b1
+          pip install black==22.3.0
      - name: run black
        run: |
          black . --check --line-length 100

As a workaround, pin click to the last version via pip install --upgrade click==8.0.2.

If you're using black as part of a pre-commit hook's YAML, you can update the pre-commit file (often .pre-commit-config.yaml ) to reference the more recent versions of black (>=22.3.0), e.g.

# See  for more information
# See  for more hooks
repos:
-   repo: 
    rev: v3.2.0
    hooks:
    -   id: trailing-whitespace
    -   id: end-of-file-fixer
    -   id: check-yaml
    -   id: check-added-large-files
-   repo: 
    rev: 22.3.0
    hooks:
    -   id: black
        exclude: ^dist/

Running pip install of a new version of black won't be sufficient for command-line pre-commit hooks if the YAML file pins black itself to a particular version... which pre-commit does by default. See also Black's GitHub Issue Tracker.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Alexander Ross

Alexander Ross

Gaming, Esports & Interactive Media Writer

Alexander Ross has covered the video game industry for a decade, writing deep dives on game design, esports tournaments, VR developments, and gaming culture.

Share this article
Twitter Facebook Pinterest