>백엔드 개발 >파이썬 튜토리얼 >형제 패키지에서 가져올 때 `sys.path` 해킹을 방지하는 방법은 무엇입니까?

형제 패키지에서 가져올 때 `sys.path` 해킹을 방지하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-09 12:10:13200검색

How to Avoid `sys.path` Hacks When Importing from Sibling Packages?

형제 패키지 가져오기 처리


형제 패키지에서 모듈을 가져오면 명령줄에서 스크립트를 실행할 때 문제가 발생할 수 있습니다. 이러한 어려움을 완화하기 위해 우리는 서투른 sys.path.insert 해킹의 필요성을 제거하는 대체 솔루션을 제시합니다.


접근 방법


우리는 코드를 단일 폴더에 패키징하고 다음과 같이 구성합니다. 다음과 같습니다:


<br>└── myproject</p>
<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를 사용하여 편집 가능한 상태로 설치하겠습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.