상대 import를 사용하여 Python 파일을 PyCharm에서 실행
4004 단어 Pycharm파이썬ExternalTools상대 import
TL;DR
$ModuleSdkPath$
-c "import os,runpy;runpy.run_module('.'.join(r'$FilePathRelativeToSourcepath$'.replace(os.sep,'.').split('.')[:-1]),{},__name__,1)"
$Sourcepath$
Sources Root를 올바르게 설정한 후 위의 설정으로 External Tools를 추가하십시오.
해결하려는 문제
예를 들어, my_pkg
라고 하는 자작의 패키지내에서 아래와 같은 파일을 만듭니다.
my_pkg/foo.pyx = 42
my_pkg/bar.pyfrom .foo import x
if __name__ == '__main__':
print(x)
여기서 my_pkg/bar.py를 PyCharm에서 열고 단순히 Run하면 다음과 같은 예외가 발생합니다.
/usr/bin/python3 /tmp/my_pkg/bar.py
Traceback (most recent call last):
File "/tmp/my_pkg/bar.py", line 1, in <module>
from .foo import x
ModuleNotFoundError: No module named '__main__.foo'; '__main__' is not a package
Process finished with exit code 1
원인
이유는 여기 기사 등에서 자세히 설명합니다.
결론만 말하면, -m
옵션을 붙여, 모듈의 완전 수식명 ( my_pkg.bar
)을 지정해 실행하면(자) 잘 동작합니다.
# ERROR!!
/usr/bin/python3 /tmp/my_pkg/bar.py
# OK
cd /tmp
/usr/bin/python3 -m my_pkg.bar
즉, 어쨌든 PyCharm이 -m
옵션 형식으로 실행하게하는 것이 좋습니다.
해결 방법 1. 어리석게 편집 구성 설정
아래 그림과 같이 설정하면 -m
옵션 형식으로 실행시킬 수 있습니다.
그러나 이 방법에는 실행하려는 각 파일에 대해 이 설정을 매번 수행해야 하는 매우 심각한 문제가 있습니다.
솔루션 2. External Tools 사용
PyCharm 에는, 외부의 실행 파일을 취급하는 기능이 갖추어져 있으므로, 이것을 이용합니다.
조금 번거롭지만 일단 설정하는 것만으로 모든 프로젝트에서 사용할 수있게되는 것이 장점입니다.
External Tools 새로 만들기
메뉴 막대의 파일 → 설정 → 도구 → 외부 도구로 이동하여 새 외부 도구를 추가하십시오.
Tool settings 부분은 아래와 같이 설정해 주십시오.
x = 42
from .foo import x
if __name__ == '__main__':
print(x)
/usr/bin/python3 /tmp/my_pkg/bar.py
Traceback (most recent call last):
File "/tmp/my_pkg/bar.py", line 1, in <module>
from .foo import x
ModuleNotFoundError: No module named '__main__.foo'; '__main__' is not a package
Process finished with exit code 1
이유는 여기 기사 등에서 자세히 설명합니다.
결론만 말하면,
-m
옵션을 붙여, 모듈의 완전 수식명 ( my_pkg.bar
)을 지정해 실행하면(자) 잘 동작합니다.# ERROR!!
/usr/bin/python3 /tmp/my_pkg/bar.py
# OK
cd /tmp
/usr/bin/python3 -m my_pkg.bar
즉, 어쨌든 PyCharm이
-m
옵션 형식으로 실행하게하는 것이 좋습니다.해결 방법 1. 어리석게 편집 구성 설정
아래 그림과 같이 설정하면 -m
옵션 형식으로 실행시킬 수 있습니다.
그러나 이 방법에는 실행하려는 각 파일에 대해 이 설정을 매번 수행해야 하는 매우 심각한 문제가 있습니다.
솔루션 2. External Tools 사용
PyCharm 에는, 외부의 실행 파일을 취급하는 기능이 갖추어져 있으므로, 이것을 이용합니다.
조금 번거롭지만 일단 설정하는 것만으로 모든 프로젝트에서 사용할 수있게되는 것이 장점입니다.
External Tools 새로 만들기
메뉴 막대의 파일 → 설정 → 도구 → 외부 도구로 이동하여 새 외부 도구를 추가하십시오.
Tool settings 부분은 아래와 같이 설정해 주십시오.
PyCharm 에는, 외부의 실행 파일을 취급하는 기능이 갖추어져 있으므로, 이것을 이용합니다.
조금 번거롭지만 일단 설정하는 것만으로 모든 프로젝트에서 사용할 수있게되는 것이 장점입니다.
External Tools 새로 만들기
메뉴 막대의 파일 → 설정 → 도구 → 외부 도구로 이동하여 새 외부 도구를 추가하십시오.
Tool settings 부분은 아래와 같이 설정해 주십시오.
$ModuleSdkPath$
-c "import os,runpy;runpy.run_module('.'.join(r'$FilePathRelativeToSourcepath$'.replace(os.sep,'.').split('.')[:-1]),{},__name__,1)"
$Sourcepath$
소스 루트 설정
나머지는
my_pkg
의 부모 디렉토리를 마우스 오른쪽 버튼으로 클릭하고 Sources Root로 등록하면 OK입니다.실행
bar.py
를 연 상태에서 메뉴 막대에서 Tool → External Tools → python -m을 클릭하십시오.제대로 실행할 수 있으면 성공입니다. 자주 사용하는 경우 바로 가기 키를 할당하는 것이 유용합니다.
Reference
이 문제에 관하여(상대 import를 사용하여 Python 파일을 PyCharm에서 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kzm4269/items/ce4736b8d621713e451f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)