형제 패키지에서 모듈을 가져오면 명령줄에서 스크립트를 실행할 때 문제가 발생할 수 있습니다. 이러한 어려움을 완화하기 위해 우리는 서투른 sys.path.insert 해킹의 필요성을 제거하는 대체 솔루션을 제시합니다.
우리는 코드를 단일 폴더에 패키징하고 다음과 같이 구성합니다. 다음과 같습니다:
<br>└── myproject</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">├── api │ ├── api_key.py │ ├── api.py │ └── __init__.py ├── examples │ ├── example_one.py │ ├── example_two.py │ └── __init__.py ├── LICENCE.md ├── README.md └── tests ├── __init__.py └── test_one.py
추가로 pyproject를 생성하겠습니다. toml 파일을 루트 폴더에 저장하여 설명합니다. package.
패키지를 가져올 수 있도록 하려면 pip를 사용하여 편집 가능한 상태로 설치하겠습니다. p>
pip install -e .
패키지에서 모듈을 가져올 때 test_one.py에 설명된 대로 가져오기 앞에 myproject.라는 접두어를 붙입니다.< ;/p>
myproject.api.api에서 가져오기 function_from_api
이 접두사는 pyproject.toml 파일 및 pip 설치 없이는 작동하지 않는 가져오기에만 필요합니다.
필요한 모든 설정이 완료되었으면 다음에서 스크립트를 실행할 수 있습니다. 명령줄:
python .myprojectteststest_one.py
이렇게 하면 예상 결과가 출력됩니다.
결론
이러한 단계를 통합하여 형제 패키지 가져오기 문제를 효과적으로 해결했으며 이제 다음에서 스크립트를 실행할 수 있습니다. sys.path 해킹에 의존하지 않고 명령줄을 사용할 수 있습니다.
위 내용은 형제 패키지에서 가져올 때 `sys.path` 해킹을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!