2017-11-15 15 views
0

겉으로보기에 간단한 작업으로 많은 밤을 땀을 흘렸습니다. 파이썬에서 로컬 모듈을 어떻게 가져 옵니까? 내가 해결 방법 (adding to sys.path 또는 more robust solutions)에 대해 읽었습니다Python에서 로컬 모듈 가져 오기 - ImportError : 모듈 이름이 아닙니다. *

하지만 다른 라이브러리 (TF에서 this file, 예를 들어) 같은 해결 방법을 사용하지 마십시오. 나는 정말로 어느 것이 든 기대하지 않는다. 나는 한 줄로 가져 와서 달릴 수 있기를 원한다. - 나는 뭔가를 놓치고 있어야한다!


, 나는 다음과 같은 디렉토리와 같은 뭔가를 특정 얻으려면 :

project/ 
    foo/ 
    src/ 
    __init__.py 
    bar.py 
    foo/ 
     __init__.py 
     boo.py 

내가 bar.py에서 단순히 그러나, 내 IDE, PyCharm을 from foo import boo 같은 것을 쓸 수 있다는 기대가 이것을보고 오류로. 를 해결하는 것 않았다 그러나 그것에 __file__ 삽입, 내가 src 폴더가 sys.path[0]에 있었던 것을 확인

Traceback (most recent call last): 
    File "bar.py", line 1, in <module> 
    from src.foo import boo 
ImportError: No module named 'src' 

:

그래서, 내 IDE 신뢰, 나는 from src.foo import boo 시도하지만 테스트로이 ImportError를 초래 문제 - 여전히이 해결 방법을 사용하고 싶지는 않지만 최후의 수단으로 사용합니다.

나는 이것을 성공하기 위해 이만 가지의 다른 트릭을 시도했다.

해결 방법 중 하나를 사용하지 않고 로컬 모듈에서 어떻게 가져올 수 있습니까?

+0

예가 불완전한가요? 나는 2017.2.4 프로에서이 문제를 볼 수 없었고, 미해결의 참조를보고하지 않았으며 적절한 수입을 제안했다. 어쨌든, 검사를 비활성화하는 것은 나에게 다소 극단적 인 해결 방법처럼 보입니다. – bgse

+0

몇 년 전에 설정을 수정했을 수 있습니다. 특히이 문제를 해결하기 위해 커뮤니티 2017.2.4로 업그레이드했습니다. 내 설정에서 설정 한 경고 인 것처럼 표시 되었다면 검사를 사용하도록 설정했는데 다른 버그로 인해 검사가 오류로 표시되는 것으로 보입니다. – Shayn

+1

아아아, 커뮤니티 및 전문가 또는 심지어 일부 플러그인 또는 사용자 설정에 미묘한 차이가있을 수 있습니다. 여기에 상당히 표준적인 구성이 있습니다. – bgse

답변

1

이 문제는 PyCharm의 버그로 인해 발생합니다.from foo import bar을 사용하는 초기 본능은 정확했으며 PyCharm의 예상 오류에도 불구하고 의도 한대로 작동합니다. src가 모듈이라고 주장했다는 사실은 내 머리 속에 경보를 울려 야했다.

PyCharm 경고는 무시해도되고 코드를 실행할 수 있습니다.

앞으로 PyCharm이 우리를 오도하지 않게하려면 '미해결 참조'검사를 비활성화해야합니다. 이는 설정에서 '미해결 참조'를 검색하고 파이썬 검사를 비활성화하여 수행 할 수 있습니다.

enter image description here