가져오기 오류: '클릭'에서 '_unicodefun' 이름을 가져올 수 없습니다.
Python Black 패키지로 린트 검사를 실행하면 다음과 같은 오류가 발생합니다.
가져오기 오류: '클릭'(/Users/robot/.cache/precommit/repo3u71ccm2/py_env-python3.9/lib/python3.9/site-packages/click/init.py ')에서 이름 '_novfun'을(를)으로 가져올 수 없습니다.
이를 조사하면서 저는 다음과 같은 관련 문제를 발견했습니다.
- 가져오기 오류: 'click' #2976에서 '_unicodefun' 이름을 가져올 수 없습니다.
- 가져오기 오류: 'click' #6013에서 '_unicodefun' 이름을 가져올 수 없습니다.
어떻게 하면 이 문제를 해결할 수 있을까요?이것이 린터의 잘못된 양성입니까?코드를 수정해야 합니까?
이 문제는 Black 22.3.0에 의해 해결되었습니다.8.1.0을 클릭하면 이전 버전이 작동하지 않습니다.
click 8.1.0과 호환되지 않음(가져오기 오류: 'click'에서 이름 '_unicodefun'을(를) 가져올 수 없음) #2964
예: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
해결 방법으로 핀click
을 통해 마지막 버전까지pip install --upgrade click==8.0.2
.
사용 중인 경우black
사전 커밋 후크의 YAML의 일부로 사전 커밋 파일을 업데이트할 수 있습니다(종종.pre-commit-config.yaml
) 최신 버전의 블랙(>=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/
의 새 버전에 대한 pip 설치 실행black
YAML 파일 핀이 있는 경우 명령줄 사전 커밋 후크로는 충분하지 않습니다.black
그 자체가 특정 버전으로...어떤.pre-commit
기본적으로 수행합니다.Black의 GitHub 이슈 추적기도 참조하십시오.
위의 내용이 모두 작동하지 않으면 코드의 이전 변경 사항에서 문제를 일으키는 캐시가 있을 수 있습니다.실행 시도:
pre-commit clean
pre-commit autoupdate
고치다
다음은 몇 가지 일반적인 사용 사례입니다.
사전 커밋 yaml에서 주소 지정 오류 발생
.pre-commit-config.yaml
- repo: https://github.com/psf/black
rev: 22.3.0
hooks:
- id: black
사전 커밋에서 문제가 지속될 경우 이전 버전이 캐시되고 있기 때문일 수 있습니다(여기에서 제안함).달려.
pre-commit clean
그리고나서pre-commit install
재설정
pyproject 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
GitHub 링크
종속성 충돌은 다음 링크에 자세히 설명되어 있습니다.
검은색을 사용하여 Python 2.7 코드를 포맷하고 있으며 Python 2.7 지원 중단으로 인해 검은색 업데이트가 선택사항이 아닌 경우 click==8.0.4를 설치합니다.아래는.github/workflows/black.yml
기존 파이썬 2.7 프로젝트에 사용한 GitHub 액션의 경우.
name: Black check
on: [pull_request]
jobs:
black-check:
runs-on: ubuntu-22.04
name: Black
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@master
with:
python-version: 3.8
- name: install black
run: |
pip install click==8.0.4 black==21.9b0
- name: run black
run: |
black . -t py27 --check
black revision 20.8b1(python27 코드를 정리할 수 있음)의 additional_dependencies 섹션에서 클릭 버전 8.0.2를 지정해야 합니다.
- repo: https://github.com/psf/black
rev: 20.8b1
hooks:
- id: black
name: Blacken python source
additional_dependencies: ["click==8.0.2"]
언급URL : https://stackoverflow.com/questions/71673404/importerror-cannot-import-name-unicodefun-from-click
'programing' 카테고리의 다른 글
R의 문자열에서 모든 특수 문자를 제거하시겠습니까? (0) | 2023.06.18 |
---|---|
플라스크-SQL 연금술 행 정보 업데이트 (0) | 2023.06.18 |
C#/에 대한 좋은 품질의 코드 적용 범위를 위해 무엇을 사용할 수 있습니까?NET? (0) | 2023.06.18 |
유닉스에서 읽기와 읽기의 차이점은 무엇입니까? (0) | 2023.06.18 |
포인터 선언에 데이터 유형이 필요한 이유는 무엇입니까? (0) | 2023.06.18 |