Pylint을 행복하게하는 방법에 대해 설명합니다. 이것은 백만 달러짜리 질문 인 것처럼 보이며 어디서나 답변되었습니다. 그러나 나는 실제로 일이 어떻게 이루어져야하는지 잘 이해할 수는 없다. 인터넷에 대한 답변이 많이 다릅니다. 이것이 거의 중복 답변이라면 미리 미안합니다. 좋은 독서 자료에 대한 언급을 정말로 고맙게 생각합니다.Python3 - 제대로 절대 수입을하고 내가 파이썬 3 개 수입을 이해하려고 노력 거대한 문제 (I 파이썬 3.5을 사용하고 있습니다) 데
/my_project/main.py
/my_project/lib/__init__.py
/my project/lib/my_lib.py
가능하다면, 나는 싶습니다 :
- 는
python3 main.py
로 내 프로그램을 실행할 수, 현재 작업 디렉토리로my_project
을 가진그래서 나는 다음과 같은 더미 프로젝트를 가지고있다.
- 언제든지
PYTHONPATH
을 수정하지 않습니다. - pylint를 행복하게 만드십시오.
- 올바른 Python3 가져 오기를 사용하십시오.
main.py
가 포함
from .lib.my_lib import foo
if __name__ == '__main__':
foo()
그리고 foo
이에 따라 해당 구성으로 lib/my_lib.py
에 정의되어, 내가 얻을 :
SystemError: Parent module '' not loaded, cannot perform relative import
내가 오류에 의해 주위에 얻을 수 있습니다 다음과 같이 가져 오기 :
from lib.my_lib import foo
그렇다면 1) 이것은 Python3 절대 가져 오기가 아닙니다. 맞습니까? 2) Pylint는 불평 : 나는 시도 Unable to import 'lib.my_lib' (import-error)
다음 것은이 같은 my_project/__init__.py
를 추가하고 가져 오는 것입니다 :
from my_project.lib.my_lib import foo
을 pylint이 행복이 경우하지만 나뿐만 실행할 수 없습니다 : python3 main.py
을 : ImportError: No module named 'my_project'
그럼 내가 그것을 실행할 수있는 유일한 방법은 모듈로 상위 디렉토리에서입니다 : python3 -m my_project.main
.
그래서 내 질문은 : 그것은 여전히 python3 main.py
로 실행할 수있는 반면, 올바른 방법으로 수입을 할 모든 가능한입니까?
고맙습니다.
'from lib.my_lib import foo' * is is absolute import : 현재 작업 디렉토리는 자동으로 첫 번째 디렉토리 인'sys.path'에 있습니다. – Evert
좀 더 정확하고 정확하게하려면 :'sys.path'의 첫 번째 항목은 [ ""Python 인터프리터를 호출하는 데 사용 된 스크립트가 들어있는 디렉토리입니다.] (https://docs.python.org/3 /library/sys.html#sys.path). – Evert
pylint에서 문제를 재현 할 수 없습니다. 가져 오기 오류가 발생하지 않습니다. – Evert