当我通过pytz安装setuptools时,迭代pytz.all_timezones
需要几秒钟。有人建议running pip unzip pytz
,这可以解决性能问题。现在我想在任何人安装我的软件包的时候让setuptools安装pytz uncompressed。
我是否可以将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 :(得分:2)
我无法在所有情况下强制解压缩依赖项。有些事情略有不足,但可能仍然有用:
zip_safe=False
中设置setup.py
,并使用效果数据作为更改的理由。zip_safe=False
,让你的包依赖于你的分叉。 (不是一个很好的选择。)pip
安装您的软件包,该软件包始终安装解压缩的所有内容(包括依赖项),而不是easy_install
或python setup.py install
。easy_install
,您可以建议他们使用easy_install -Z
,这会强制解压缩安装。