python 导入错误:无法从"click"导入名称"_unicodefun"

vuv7lop3  于 2022-12-28  发布在  Python
关注(0)|答案(4)|浏览(387)

当使用Python Black包运行我们的lint检查时,出现了一个错误:
导入错误:无法从"单击"导入名称"_unicodefun"(/用户/robot/. cache/预提交/repo3u71ccm2/py_env-python3.9/库/python3.9/站点包/单击/init. py)'
在研究过程中,我发现了以下相关问题:

    • 一个月一次 *
    • 一对一 *

我怎样才能解决这个问题?这是一个假阳性从linter?我需要修改我的代码?

gdx19jrr

gdx19jrr1#

这个问题已经被Black 22.3.0修复了。之前的版本不适用于Click 8.1.0。

  • 一个月一次 *

例如: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

https://github.com/Clinical-Genomics/cgbeacon2/pull/221/files
解决方法是通过pip install --upgrade click==8.0.2click固定到最新版本。

pqwbnv8z

pqwbnv8z2#

如果你使用black作为预提交钩子的YAML的一部分,你可以更新预提交文件(通常是.pre-commit-config.yaml)来引用black的最新版本(〉=22.3.0),例如:

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

如果YAML文件将black本身固定到一个特定的版本...而pre-commit在默认情况下是这样做的,那么运行black新版本的pip install对于命令行预提交钩子来说是不够的。

zvms9eto

zvms9eto3#

如果以上都不起作用,则代码中以前更改的缓存可能会造成一些麻烦。请尝试运行:
第一个月
pre-commit autoupdate

mgdq6dx1

mgdq6dx14#

GitHub链接

以下链接详细介绍了依赖项冲突

修复

以下是一些常见的使用案例:

预提交yaml中的寻址错误

第一个月

- repo: https://github.com/psf/black
  rev: 22.3.0
  hooks:
    - id: black

如果问题在预提交时仍然存在,可能是因为缓存了旧版本(如此处所建议)。运行pre-commit clean,然后运行pre-commit install以重置

pyprojct toml中的寻址错误

pyproject.toml

[tool.poetry.dev-dependencies]
black = {version = "^22.3.0", allow-prereleases = true}

[tool.black]
# https://github.com/psf/black
target-version = ["py39"]
line-length = 120
color = true

示例

  • 要求pyproject.toml以上 *

使用Makefile和Poetry

Makefile

#* Poetry
.PHONY: poetry-download
poetry-download:
    curl -sSL https://install.python-poetry.org | $(PYTHON) -

.PHONY: pre-commit-install
pre-commit-install:
    poetry run pre-commit install

#* Formatters
.PHONY: codestyle
codestyle:
    poetry run black --config pyproject.toml ./

.pre-commit-config.yaml

default_language_version:
  python: python3.9

default_stages: [commit, push]

repos:
  - repo: local
    hooks:
      - id: black
        name: black
        entry: poetry run black --config pyproject.toml
        types: [python]
        language: system

相关问题