2009-04-22 6 views
10

원래 패키지를 원래 형태로 가져 오기 위해 다운로드 할 수있는 형태로 패키지를 PyPI에 업로드하는 마법 "python setup.py some_incantation_here"명령은 무엇입니까?원시 Python 패키지를 PyPI에 업로드하는 방법은 무엇입니까?

일부 원본 및 몇 개의 이미지 파일 (package_data)이 포함 된 패키지가 있습니다. "setup.py sdist register upload"을 입력하면 .tar.gz에 이미지 파일이 제외됩니다. "setup.py bdist_egg register upload"을 실행하면 계란에 이미지가 포함되지만 setup.py 파일은 제외됩니다. 내 프로젝트의 전체 파일 인 "setup.py the_whole_freaking_thing register upload"을 업로드 할 수 있기를 원합니다.

아마 가장 좋은 방법은 수동으로 프로젝트 디렉토리를 tar.gz하고 PyPI 웹 인터페이스를 사용하여 업로드하는 것입니다.

경고 : 방금 SVN 저장소와 PyPI에서 만든 간단한 프로젝트를 저장하지 않아도됩니다. 두 곳에서 기록 및 파일을 추적하는 작업 낭비처럼 보입니다. .

답변

16

"sdist"명령을 수행하면 "package_data"에 나열된 파일이 아닌 "setup.py"옆에있는 "MANIFEST.in"파일이 포함 된 파일 목록을 제어합니다. 이것은 오늘날 Python 패키징 솔루션의 정신 분열증적인 성격과 관련이 있습니다. "sdist"는 표준 라이브러리의 distutils에 의해 제공되는 반면 "bdist_egg"는 setuptools 모듈에 의해 제어됩니다.

문제를 해결하려면 setup.py 파일 옆에 MANIFEST.in를 만들어보십시오,이처럼에게 내용을 제공 : 나는 영상 해요 물론

include *.jpg 

당신의 "이미지 파일" 디스크 이미지 또는 ISO 이미지 또는 실제 이미지가 아닌 실제 그림입니다. 내가 잘못 생각하면 위의 라인을 조정해야 할 수도 있습니다! 그러나 distutils 문서의 Specifying which files to distribute 섹션을 확인하고 .tar.gz 소스 배포판에 해당 파일을 표시 할 수 없는지 확인하십시오! 행운을 빕니다.

+0

완벽! "include nosenotify/*. png"은 내 파일이 하위 디렉토리에 있기 때문에 필자가 필요로하는 형식이었습니다.이 형식은 .tar.gz nosenotify/디렉토리에 .png 파일이 포함되도록합니다. –

+2

PS Brandon, 아이러니하게도 당신의 대답을 읽은 후에 나는 당신의 블로그에 가서 질문 전 하루 전부터 그 게시물을보고, 당신이 pyron을 만들었다는 setup.py로 너무 지긋 지긋하다고 말했습니다. :) –

관련 문제