[python] 파이썬 계란은 무엇입니까?

저는 Python을 처음 사용하고 패키지 작동 방식을 이해하려고합니다. 아마도 “계란”은 일종의 패키징 메커니즘이지만, 이들이 어떤 역할을하는지에 대한 간단한 개요가 무엇이고 그것이 왜 유용한 지, 어떻게 만드는지에 대한 정보일까요?



답변

참고 : 계란 포장은 휠 포장으로 대체되었습니다.

.jarJava 의 파일 과 동일한 개념으로 .zip일부 메타 데이터 파일의 이름이 바뀐 파일입니다..egg 코드를 번들로 분배하기 위해 입니다.

구체적으로 : 파이썬 계란의 내부 구조

“Python egg”는 코드, 리소스 및 메타 데이터로 구성된 특정 버전의 Python 프로젝트 릴리스를 구현하는 논리적 구조입니다. 파이썬 계란을 물리적으로 인코딩하는 데 사용할 수있는 여러 형식이 있으며 다른 형식도 개발할 수 있습니다. 그러나 파이썬 계란의 주요 원칙은 계란을 발견하고 가져올 수 있어야한다는 것입니다. 즉, 파이썬 응용 프로그램이 시스템에 어떤 계란이 있는지 쉽고 효율적으로 찾아서 원하는 계란 내용을 가져올 수 있어야합니다.

.egg형식은 프로젝트가 기본적으로 단일 디렉토리 또는 파일 내에 자체 포함되어 있으며 다른 프로젝트의 코드 또는 리소스와 섞이지 않기 때문에 배포 및 코드의 쉬운 설치 제거 또는 업그레이드에 적합합니다. 또한 여러 버전의 프로젝트를 동시에 설치하여 개별 프로그램에서 사용하려는 버전을 선택할 수 있습니다.


답변

.egg파일은 Python 패키지의 배포 형식입니다. 소스 코드 배포 또는 Windows의 대안 일뿐 exe입니다. 그러나 순수에 대한주의 Python의를.egg 파일은 완전히 크로스 플랫폼입니다.

.egg파일 자체는 본질적이다 .zip파일. 확장명을 ” zip“로 변경하면 해당 확장명에 아카이브 내에 폴더가 있음을 알 수 있습니다.

또한 .egg파일 이 있으면 다음을 사용하여 패키지로 설치할 수 있습니다.easy_install

예 : .egg디렉토리에 파일 을 만들려면 mymath몇 가지 파이썬 스크립트가있을 수 있습니다. 다음 단계를 수행하십시오.

# setup.py
from setuptools import setup, find_packages
setup(
    name = "mymath",
    version = "0.1",
    packages = find_packages()
    )

그런 다음 터미널에서 다음을 수행하십시오.

 $ python setup.py bdist_egg

이렇게하면 많은 출력이 생성되지만 완료되면 build , distmymath.egg-info 세 개의 새 폴더 가 있음을 알 수 있습니다 . 관심있는 유일한 폴더는 파일을 찾을 수 있는 dist 폴더입니다..eggmymath-0.1-py3.5.egg 기본 파이썬 (설치) 버전 번호 (여기서는 3.5)입니다.

출처 : Python 라이브러리 블로그


답변

Python eggs는 Python 프로젝트와 함께 추가 정보를 번들로 제공하는 방법으로, 프로젝트가 다른 프로젝트에 플러그인을 제공 할 수있을뿐만 아니라 런타임에 프로젝트의 종속성을 확인하고 만족시킬 수 있습니다. 계란을 구현하는 몇 가지 이진 형식이 있지만 가장 일반적인 것은 ‘.egg’zipfile 형식입니다. 프로젝트 배포에 편리한 형식이기 때문입니다. 패키지 별 데이터, 프로젝트 전체 메타 데이터, C 확장 및 Python 코드를 포함한 모든 형식이 지원됩니다.

Python 계란을 설치하고 사용하는 가장 쉬운 방법은 “Easy Install”Python 패키지 관리자를 사용하는 것입니다.이 패키지 관리자는 계란을 찾고, 다운로드하고, 빌드하고, 설치할 수 있습니다. 사용하려는 Python 프로젝트의 이름 (및 선택적으로 버전)을 알려 주기만하면됩니다.

Python 계란은 Python 2.3 이상에서 사용할 수 있으며 setuptools 패키지를 사용하여 빌드 할 수 있습니다 (소스 코드는 Python Subversion 샌드 박스 또는 현재 설치 지침은 EasyInstall 페이지 참조).

Python Eggs의 주요 이점은 다음과 같습니다.

  • “Easy Install”Python 패키지 관리자와 같은 도구를 활성화합니다

  • .egg 파일은 Python 패키지의 “제로 설치”형식입니다. 빌드 또는 설치 단계가 필요하지 않으며 PYTHONPATH 또는 sys.path에 배치하고 사용하십시오 (C 확장 또는 데이터 파일을 사용하는 경우 런타임이 필요할 수 있음)

  • 여기에는 의존하는 다른 계란과 같은 패키지 메타 데이터가 포함될 수 있습니다.

  • “네임 스페이스 패키지”(다른 패키지 만 포함하는 패키지)를 별도의 배포판 (예 : zope. , twisted , peak. * )으로 분할 할 수 있습니다. 항상 같은 패키지에 배치해야하는 일반 패키지와 달리 별도의 계란으로 패키지를 배포 할 수 있습니다. 부모 디렉토리. 이것은 현재 거대한 모 놀리 식 패키지가 별도의 구성 요소로 배포되도록합니다.)

  • 그것들은 어플리케이션이나 라이브러리가 필요한 버전의 라이브러리를 지정할 수있게 해주므로 twisted.internet 가져 오기를하기 전에 require ( “Twisted-Internet> = 2.0”)를 할 수 있습니다.

  • 계란 런타임은 간단한 API를 제공하여 계란을 찾고 광고 된 진입 점을 찾을 수 있기 때문에 확장 프로그램 또는 플러그인을 확장 가능한 응용 프로그램 및 프레임 워크 (예 : 0.9b1의 플러그인에 계란을 사용하는 Trac와 같은)에 배포하는 데 적합한 형식입니다. Eclipse의 “확장 점”개념).

Java의 “jar”형식의 이점과 유사한 표준화 된 형식을 사용하면 얻을 수있는 다른 이점도 있습니다.


답변

“Egg”는 Python 관련 프로젝트를위한 단일 파일 가져 오기 가능한 배포 형식입니다.

“Python Eggs에 대한 빠른 안내서”에 따르면 “달걀은 Jar가 Java를위한 것처럼 Python에 대한 것입니다 …”

계란은 실제로 항아리보다 풍부합니다. 라이센스 세부 사항, 릴리스 종속성 등과 같은 흥미로운 메타 데이터를 보유합니다.


답변