2014-09-12 2 views
2

pytzsetuptools을 통해 설치하면 pytz.all_timezones을 반복하는 데 몇 초가 걸립니다. 누군가 running pip unzip pytz을 제안 했으므로 성능 문제가 해결됩니다. 이제 누군가가 내 꾸러미를 설치할 때마다 setuptools가 압축을 풀어서 pytz를 설치하게하고 싶습니다.압축 해제 패키지를 설치하기 위해 setup.py를 설정하십시오

내 패키지의 특정 종속성을 항상 압축 해제하도록 setuptools를 구성 할 수 있습니까?

$ virtualenv ve2.7 
$ source ve2.7/bin/activate 
(ve2.7)$ python setup.py install 
(ve2.7)$ python slowpytz.py 
2.62620520592s 
(ve2.7)$ pip unzip pytz 
DEPRECATION: 'pip zip' and 'pip unzip` are deprecated, and will be removed in a future release. 
Unzipping pytz (in ./ve2.7/lib/python2.7/site-packages/pytz-2014.7-py2.7.egg) 
(ve2.7)$ python slowpytz.py 
0.0149159431458s 

setup.py

from setuptools import setup 
setup(name='slowpytz', version='0.0.1', install_requires=['pytz==2014.7']) 

slowpytz.py

import pytz 
import time 
start = time.time() 
zones = list(pytz.all_timezones) 
print(str(time.time() - start) + 's') 
+0

왜 천천히 알아 내려고 노력 했습니까? –

+0

필자는 시간대 데이터 파일을 반복 할 필요가 있으며 압축 된 경우 상당히 느립니다. (좋은 설명이 아니라, 내가 조사해 보았다.) –

답변

2

내가 모든 경우에 의존성의 압축 풀기를 강제로 알고있는 방법은 없습니다. 그 약간 짧은 가을,하지만 여전히 유용 할 수 있습니다 어떤 것들은 : pytz가 setup.pyzip_safe=False을 설정하는

  • 당신은 변화에 대한 정당화 성능 데이터를 사용하여, 버그 리포트를 제출 할 수있다.
  • 실패하면 pytz를 포크하고 zip_safe=False을 추가하고 패키지를 포크에 의존하게 할 수 있습니다. (좋은 옵션은 아닙니다.)
  • pip으로 패키지를 항상 설치하는 것이 좋습니다.이 패키지는 easy_install 또는 python setup.py install 대신 압축 해제 된 모든 항목 (종속성 포함)을 항상 설치합니다.
  • 사용자가 easy_install을 사용해야하는 경우 easy_install -Z을 사용하는 것이 좋으며이 경우 압축이 풀린 설치가 필요합니다.
+0

OK, 버그 접수 : https://bugs.launchpad.net/pytz/+bug/1369007 –

+0

아이디어를 제공해 주셔서 감사합니다. 내 사용자는 이미 pip로 설치하고 있지만, 내 테스트에서는 setup.py를 사용하여 가상 환경에 설치하여 다양한 Python 버전을 테스트합니다.이 버전에서이 문제점을 발견했습니다. –

+1

@DanWeaver 테스트에서 가상 환경에 pip를 설치하지 않는 이유는 무엇입니까? 가상 환경에는 항상 pip가 설치되어 있으므로 사용할 수 있으며 스크립팅이 가능합니다. 아니면 더 나은, 왜 도구를 구체적으로 다양한 Python 버전 (및 삐삐를 사용하여 설치)에 대한 테스트 virtualenvs 설치를 처리하도록 설계된 독극물을 사용하지? –

관련 문제