>source

현재 다른 폴더에서 내 모듈 중 하나를 가져 오려고합니다. 이렇게 ...

from Assets.resources.libs.pout import Printer, ForeColor, BackColor

이 가져 오기 방법은 PyCharm에서 완전히 잘 작동하지만 cmd 또는 IDLE에서 파일을 시작하려고하면이 오류가 발생합니다.

ModuleNotFoundError: No module named 'Assets'

이것은 main.py에서 pout.py 로의 파일 구조입니다.

- Assets
  - main.py
  - resources
    - libs
      - pout.py

이 문제를 어떻게 해결할 수 있는지에 대한 단서가 있습니까? 어떤 도움을 주시면 감사하겠습니다!

  • 답변 # 1

    편집하다:원래 답변은 실행중인 스크립트가 주어진 폴더 구조 내에 있다는 가정을 기반으로했습니다. 다시 읽으면 사실이 아닐 수 있습니다. 일반적인 해결책은

    sys.path.append('path_to_Assets')
    
    

    그러나 자세한 내용은 아래를 읽으십시오.

    원래 답변

    모듈을로드 할 수있는 경로는 스크립트를 실행하는 두 가지 방법에 따라 다릅니다.

    추가하면

    import sys
    print(sys.path)
    
    

    가져 오기 전에 스크립트 맨 위에 차이점을 확인할 수 있습니다.

    직접 실행하면 첫 번째 항목은 스크립트 자체의 위치이고 그 뒤에 다양한 시스템/환경 경로가 있습니다. PyCharm에서 실행하면 동일한 첫 번째 항목과 프로젝트의 최상위 수준 항목이 표시됩니다. 이것이 PyCharm에서 실행될 때 모듈을 찾는 방법입니다. 이 동작은 실행 구성의 "Add content roots to PYTHONPATH"옵션에 의해 제어됩니다.

    모든 상황에서 작동하는 방식으로 프로그래밍 방식으로이 경로를 추가하는 것은 간단하지 않습니다. PyCharm과 달리 스크립트에는 최상위 수준이 있어야하는 위치에 대한 개념이 없기 때문입니다. 그러나 최상위 수준에서 스크립트를 실행할 것이라는 것을 알고 있다면 작업 디렉토리가 Assets를 포함하는 폴더가 될 것입니다.

    sys.path.append(os.path.abspath('.'))
    
    

    그러면 경로에 올바른 폴더가 추가됩니다.

관련 자료

  • 이전 html - navbar에서 이미지/아이콘 정렬
  • 다음 sql - MySQL에 의한 그룹 속성에 따른 사례