PyCharm에서 해결되지 않은 참조 문제


373

디렉토리 구조가 있습니다

├── simulate.py
├── src
   ├── networkAlgorithm.py
   ├── ...

그리고로 네트워크 모듈에 액세스 할 수 있습니다 sys.path.insert().

import sys
import os.path
sys.path.insert(0, "./src")
from networkAlgorithm import *

그러나 pycharm은 모듈에 액세스 할 수 없다고 불평합니다. pycham이 참조를 해결하도록 어떻게 가르 칠 수 있습니까?

여기에 이미지 설명을 입력하십시오


4
src 폴더에 __init__.py파일이 있습니까?
Puffin GDI

@Puffin GDI : 아니요. 그렇지 않습니다.
prosseek

5
@PuffinGDI src 폴더에이 init .py 파일 이 필요 합니까?
Jack Chi

예, 파이썬이 패키지를 식별하기 위해 : stackoverflow.com/questions/42094723/…
rnoodle

클래스 이름을 변경하고 계속 작업합니다. 내가 뛰었을 때이 오류가 발생하여 완전히 이름 바꾸기를 잊어 버렸고 가져 오는 동안 pycharm 제안을 찾으려고했습니다. 젠장, 제안은 대소 문자를 구분합니다! -파이썬이 처음입니다!
Vignesh Paramasivam

답변:


817

수동으로 추가 한 것은 실제로이 작업 을 수행하는 한 가지 방법이지만 더 간단한 방법이 있습니다. 즉 pycharm에게 src폴더를 소스 루트로 추가하고 싶다고 말한 다음 소스 루트를 파이썬에 추가하면됩니다. 통로.

이런 식으로 인터프리터 설정에 하드 코딩 할 필요가 없습니다.

  • src소스 컨텐츠 루트로 추가하십시오 .

                            여기에 이미지 설명을 입력하십시오

  • 그런 다음 추가 소스를 다음에 추가하십시오 PYTHONPATH.

여기에 이미지 설명을 입력하십시오

  • 이제 수입품이 해결됩니다.

                      여기에 이미지 설명을 입력하십시오

이런 식으로 소스 루트로 원하는 것을 추가 할 수 있으며 문제가 해결됩니다. 당신은 그러나 소스 루트로 마크를 해지하면 됩니다 오류가 발생합니다 :

                                  여기에 이미지 설명을 입력하십시오

이 모든 것을 다시 시작하는 것을 잊지 마십시오. PyCharm 메뉴에서 File-> Invalidate Caches / Restart를 선택하십시오.


16
IntelliJ와 함께 Python 플러그인을 사용하는 경우에도 작동합니다.
rob mayoff 2013

13
이 솔루션이 작동합니다. 문제는 다른 프로그래머가 svn에서 코드를 검색 할 때 "확인되지 않은 참조"오류 프롬프트를 제거하기 위해 동일한 설정을 다시 수행해야한다는 것입니다.
Ben Lin

2
@GamesBrainiac의 해결책은 IDE가 "sys.path.insert (0,"./src ")"를 구문 분석하여이 특정 파일의 PYTHONPATH에 추가 한 다음 적절한 구문 분석을 수행 할 수 있다는 것입니다.
벤 린

2
또한 컨텐츠 루트 경로가 올바른지 확인해야합니다. pycharm 5의 환경 설정-> 프로젝트-> 프로젝트 구조에서 찾을 수 있습니다.
lps

1
이상하게도 하위 디렉토리는 고려되지 않습니다. 예를 들어, 아래 srcviews폴더가있는 myview.py경우 시도 할 때 여전히 해결되지 않은 참조 오류가 발생합니다 from src.views.myview import <my_function>.
SexyBeast

49
  1. 폴더 에서 __init__.py파일 확인src
  2. src폴더를 소스 루트로 추가
  3. 그런 다음 소스를 추가하십시오 PYTHONPATH(위 참조)
  4. PyCharm 메뉴에서 File-> Invalidate Caches / Restart를 선택하십시오.

11
이 마지막 단계는 내 솔루션에서 유일하게 누락 된 것입니다. 수락 된 답변이 이것을 추가 할 수 있습니다.
aimbire

여기에 언급 된 마지막 단계가 없으면 허용 된 답변이 작동하지 않습니다. 허용 대답은뿐만 아니라이 단계를 추가해야합니다 /
santhosh 쿠마

23

여전히이 문제를보고있는 사람은 PyCharm 2016.3에서 시도한 답변을 여전히 사용할 수 있습니다. UI가 변경되었을 수 있지만 옵션은 여전히 ​​동일합니다.

즉. 루트 폴더를 마우스 오른쪽 버튼으로 클릭하십시오-> '다음으로 디렉토리 표시'-> 소스 루트


1
이 토론에서 너무 많은 복잡한 답변. 여기에 제시된 솔루션은 나에게 너무나 효과적이었습니다.

16

모든 해결 방법을 테스트 한 후 살펴보고 Settings -> Project -> project dependencies다시 정렬하는 것이 좋습니다 .

pycharm prefrence


이것은 나를 위해 완벽하게 작동합니다. pygame거기에 설치 했지만 더 이상 해결되지 않은 참조 문제는 없습니다!
Michal Przybylowicz


5

일반적으로 이것은 누락 된 패키지 문제입니다. 캐럿을 해결되지 않은 참조에 놓고을 눌러 Alt+Enter옵션을 표시하면 해결 방법을 알아야합니다.


4

수락 된 답변을 따른 후 다음을 수행하면 해결되었습니다.

FileSettingsProject <your directory/project>Project Dependencies

가져 오기가 해결되지 않은 파일이있는 디렉토리 / 프로젝트를 선택하고 해당 프로젝트가 다른 프로젝트에 종속되어 있음을 Pycharm에 알리려면 확인란을 선택하십시오.

내 폴더 계층 구조는 질문의 계층 구조와 약간 다릅니다. 광산은 이렇게

├── MyDirectory  
     └── simulate.py  
├── src  
     ├── networkAlgorithm.py  
     ├── ...

Pycharm에 src가 달려 있다고 말하면 MyDirectory문제가 해결되었습니다!


4

모든 답변이 실제로 도움이 되더라도 명시 적으로 설명해야 할 작은 정보가 있습니다.

  • 기본적으로 여러 계층 디렉토리가있는 프로젝트는 일부 속성이있는 패키지로 작동합니다.
  • 사용자 정의 로컬 생성 클래스를 가져 오려면 .py파일이 포함 된 디렉토리로 이동하여 해당 파일을 작성해야합니다 __init__.py.

이것이 도움이되는 이유는 파이썬이 디렉토리를 패키지를 포함하는 것으로 취급하도록하기 위해이 파일이 필요하기 때문입니다. 건배!


3

PyCharm을 통해 설치하십시오 (Community Edition과 함께 작동). Settings > Project > Project Interpreter아래 스크린 샷에서 녹색 + 아이콘을 열고 클릭하십시오. 두 번째 대화 상자가 열리면 패키지 이름을 입력하고 '패키지 설치'버튼을 클릭하십시오.

여기에 이미지 설명을 입력하십시오



1

올바른 통역사를 사용하고 있는지 확인하십시오. 이 문제를 해결하기 위해 "해결되지 않은 참조 '장고'"오류가 발생했습니다. 프로젝트 설정에서 프로젝트 인터프리터 (Python 3을 Python 2.7로 변경)를 변경했습니다 : 프로젝트를 선택하고 파일-> 설정-> 프로젝트 :-> 프로젝트 인터프리터-> 찾아보기로 이동하십시오. 올바른 버전 또는 통역사를 선택하십시오 (예 : /usr/bin/python2.7).


1

필자의 경우 문제는 Virtual environment글로벌 사이트 패키지에 액세스 할 수 없었던 사용 중 이었습니다 . 따라서 인터프리터는 새로 설치된 패키지를 인식하지 못했습니다.

이 문제를 해결하려면 가상 인터프리터를 편집하거나 다시 작성하고 Inherit global site-packages옵션을 선택하십시오.

여기에 이미지 설명을 입력하십시오


이것이 바람직하지 않은 결과를 초래하지 않고 가상 환경을 사용해야하는 한 가지 이유를 물리 치지 않습니까? 즉, 해당 환경을 어딘가에 배치하고 해당 글로벌 사이트 패키지가 설치되어 있으면 문제가있는 것입니다. 그것이 내가 생각했던 거죠.
theStud54


0

PyCharm 2019.3.1에서 완료 src 폴더를 마우스 오른쪽 버튼으로 클릭-> "디렉토리를 다음으로 표시"-> "제외됨"을 클릭하면 src 폴더가 파란색이어야합니다.


-1

Pycharm은 venv를 사용합니다. venv의 콘솔에서 패키지를 명시 적으로 설치하거나로 이동해야합니다 settings -> project interpreter -> add interpreter -> inherit global site-packages.


-1

최신 버전의 pycharm u는 파일을 가져올 디렉토리 또는 python 패키지를 마우스 오른쪽 버튼으로 클릭하고 'Mark Directory As'-> 'Sources Root'를 클릭하면됩니다.


-1

이를 해결하는 가장 쉬운 방법은 pyCharm 소프트웨어에서 다음을 수행하는 것입니다.

파일> 설정> (프로젝트 : 프로젝트 이름)> 프로젝트 인터프리터>를 클릭하십시오.

그런 다음 오른쪽에있는 "+"아이콘을 클릭하여 원하는 패키지를 검색하고 설치하십시오.

코딩을 즐기십시오!


1
스택 오버플로에 오신 것을 환영합니다. 답변 해 주셔서 감사합니다. 이것이 정확할 수는 있지만, 앞으로는 더 자세한 내용없이 이미지 나 링크를 다른 사이트에 게시하지 마십시오. 링크가 어느 시점에서 작동을 멈출 수 있으므로이 답변은 다른 사용자에게는 유용하지 않습니다.
CyberJacob

@CyberJacob 대단히 감사합니다. 귀하의 조언에 감사드립니다. 이미지를 삭제하고 대신 텍스트를 추가하여 답변을 수정했습니다.
zaid.mohammed
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.