codememo

__init_.py에서 참조 'xxx'을(를) 찾을 수 없습니다.

tipmemo 2023. 8. 21. 21:21
반응형

__init_.py에서 참조 'xxx'을(를) 찾을 수 없습니다.

저는 PyCharm에서 다음과 같이 구성된 프로젝트를 가지고 있습니다.

-- Sources
   |--__init__.py
   |--Calculators
      |--__init__.py
      |--Filters.py
   |--Controllers
      |--__init__.py
      |--FiltersController.py
   |--Viewers
      |--__init__.py
      |--DataVisualization.py
   |--Models
      |--__init__.py
      |--Data

나의 모든 것__init__.py바로위 것제는을고외 바로 에 있는 Sources빈 파일입니다.저는 이런 종류의 경고를 많이 받고 있습니다.

__init_.py에서 참조 'xxx'을(를) 찾을 수 없습니다.

를 들어, 나의 를들어, 의나.FiltersController.py다음 코드가 있습니다.

import numpy.random as npr

bootstrap = npr.choice(image_base.data[max(0, x-2):x+3, max(0, y-2):y+3].flatten(), size=(3, 3), replace=True)

그리고 나는 다음 경고를 받습니다.

__init_.py에서 참조 '선택'을 찾을 수 없습니다.

이게 무슨 뜻인지, 파이썬에서 제대로 코딩하려면 어떻게 해야 하는지 구글링 중입니다.

이것은 파이차르에 있는 벌레입니다.이 PyCharm에 하는 것 .__all__ = []진술.

적절한 코딩 에티켓을 위해, 당신은 다음을 포함해야 합니다.__all__당신의 모듈에서 나온 진술? ..이것은 실제로 우리가 어린 스팍이 테스트를 받는 동안 대답하는 것을 듣는 질문입니다. 그는 "도덕적으로 칭찬받을 만하지만 도덕적으로 의무적이지는 않습니다."라고 대답했습니다.

이 문제를 피하기 위해, 당신은 간단히 그것을 비활성화할 수 있습니다. (중요하지 않은 것으로 간주) (매우 유용함) 전체적으로 검사하거나 특정 함수 또는 문에 대해 억제합니다.

수행 방법:

  • 캐럿을 오류가 있는 텍스트 위에 놓습니다('선택', 위 예제에서 참조).
  • 의도 메뉴를 엽니다(기본적으로 alt-enter, 내 것은 alt-backspace로 설정됨).
  • 오른쪽 화살표를 눌러 하위 메뉴를 열고 관련 작업을 선택합니다.

PyCharm은 이와 같은 작은 버그의 몫을 가지고 있지만, 제 생각에는 이점이 단점을 훨씬 능가합니다.다른 좋은 IDE를 시도해보고 싶다면 스파이더/스파이더립도 있습니다.

편집: 원래는 이것이 확인에 특화된 것이라고 생각했습니다.__all__하지만 이것은 더 일반적인 '해결되지 않은 참조' 검사인 것처럼 보이며, 매우 유용할 수 있습니다.위에서 언급한 메뉴를 사용하거나 다음을 지정하여 문 수준의 기능 비활성화를 사용하는 것이 가장 좋습니다.# noinspection PyUnresolvedReferences성명서 앞줄에

당신은 먼저 이것을 봐야 합니다.패키지를 가져올 때 수행되는 작업에 대해 설명합니다.편의상:

과 같은 을 사용합니다.. 패키지가 다음과 같은 경우__init__.py코드는 이름이 붙은 목록을 정의합니다.__all__ 이름 은 " 다과경가모져이간목다니주"일 때 가져와야 하는 됩니다.from package import *가 발생했습니다.패키지의 새 버전이 출시될 때 이 목록을 최신 상태로 유지하는 것은 패키지 작성자에게 달려 있습니다.패키지 작성자는 패키지에서 *을(를) 가져오는 데 사용할 수 없는 경우 지원하지 않기로 결정할 수도 마찬가지입니다.

따라서 PyCharm은 경고 메시지를 표시하여 패키지에서 *를 가져올 때 작성자가 가져올 모듈을 결정할 수 있도록 이를 준수합니다.따라서 이것은 PyCharm의 유용한 기능인 것 같습니다(나는 이것을 버그라고 부를 수 없다고 추측합니다)패키지를 에서 가져올 때 가져올 모듈의 이름을 추가하여 이 경고를 쉽게 제거할 수 있습니다.__all__list인 , 이와이입니다.

__init_.py

from . import MyModule1, MyModule2, MyModule3
__all__ = [MyModule1, MyModule2, MyModule3]

이것을 추가한 후에는ctrl+click당신 프로젝트의 다른 부분에서 사용되는 이 모듈 이름에서 선언문으로 바로 이동할 수 있습니다. 제가 종종 매우 유용하다고 생각하는 것입니다.

오래된 일인 건 알지만, 구글이 저를 여기로 보냈기 때문에 다른 사람들도 저처럼 올 것 같아요.

2018년에 대한 답은 여기에서 선택된 답입니다: Pycharm: 작업 프로젝트를 열 때 IDE에서 "해결되지 않은 참조" 오류입니다.

의 하나만수있다니습할추만 추가할 수 .Content Root하지만 여러 개를 추가할 수 있습니다.Source Folders 없음 질없 음요__init__.pyfiles 파일

이 문제를 해결하려면 원본 디렉터리를 원본 루트로 표시해야 합니다.이것이 왜 관련성이 있는지는 불분명하지만, 그렇습니다.
수행 방법:

  • 원본 디렉터리를 마우스 오른쪽 버튼으로 클릭
  • 디렉터리를 소스 루트로 표시
  • 파일 --> 캐시 무효화/다시 시작...-> 무효화 후 다시 시작

복사했습니다cv2.pydcv2를 만들어 폴를만내붙습다니었여넣부에 .site-packages폴더와 이것이 문제를 해결했습니다.

참조 이미지:

Image-1

Image-2

음, 저는 여기서 제 자신을 정말 능가할 수 있었습니다.나는 그것을 가지고 있지 않았습니다..py의 끝에 확장자 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

PyCharm의 한 프로젝트에 여러 개의 개별 프로젝트를 추가하고 다른 프로젝트를 소스 경로로 표시하는 경우에도 이 문제가 발생할 수 있습니다.

선택한 원본 경로를 확인합니다.ctrl+클릭으로 문제를 해결하는 데 도움이 되었습니다.

PyCharm에서 다음과 같은 2개의 첨부 프로젝트가 있을 때 발생했습니다.

  • 최신 Python 버전(예: 3.6)과 함께 Python 인터프리터를 사용하는 한 프로젝트
  • 이전 Python 버전(예: 2.7)과 함께 Python 인터프리터를 사용하는 다른 프로젝트

잘못된 Python 버전을 가리키는 참조를 해결하기 위해 프로젝트 중 하나를 분리해야 했습니다.

이것은 웹소켓 라이브러리에서 발생했지만 더 일반적인 문제인 것 같습니다.예:'init.py init'에서 참조 'exceptions'를 찾을 수 없습니다.파이'

이것은 나에게 효과가 있었습니다: 웹 소켓 가져오기 예외

하십시오.__init__.py예를 들어 파일 형식을 "Python"이 아닌 "Text"로 변경한 경우 PyCharm은 Python 코드에 대한 파일을 분석하지 않습니다.인 경다파아볼수다있니습을이콘이일음우▁for▁▁the▁file▁notice▁that▁in다▁you▁may니를 볼 수 있습니다.__init__.py파일이 다른 Python 파일과 다릅니다.

수정할 내용:Settings > Editor > File Types형식에서 " 패턴"에서 " 이름 패턴"을 합니다.__init__.py.

언급URL : https://stackoverflow.com/questions/23248017/cannot-find-reference-xxx-in-init-py

반응형