在virtualenv中首次调用pytz.timezone的速度很慢

问题描述 投票:9回答:4

我已经在virtualenv中安装pytz(v2013.8,但它发生在2013.b,2011k)。首次致电

pytz.timezone("US/Eastern")

大约需要4秒钟。在常规环境中,这基本上是瞬时的。

有人能使它运行得更快吗?

python virtualenv pytz
4个回答
12
投票

我实际上是通过四处浏览并查看源代码来找到答案的。由于它是从egg内获取其时区设置的,因此对时区的第一次调用必须检查所有时区文件是否存在,因此根据操作系统查找这些文件的方式,首次调用可能会很慢。如果使用apt-get install python-tz安装pytz,则调用会命中未压缩的文件,并且速度非常快。如果使用easy_install pytz安装,则会一遍又一遍地击打一个压缩文件,并且速度较慢。

因此解决方案是将其解压缩。幸运的是,点子有一个方便的命令。

tl; dr

pip unzip pytz

1
投票

似乎在Windows中只是删除pytz-2013.9-py2.7.egg


1
投票

我在跑步时遇到困难

pip解压缩pytz

如它说找不到包。我发现可行的解决方法是编辑setup.py文件并替换

zip_safe = False

。 (将其设置为False)。然后再次运行安装程序:

python setup.py安装

这也解决了我的载入时间慢的问题。


0
投票

您实际上可以通过设置环境变量PYTZ_TZDATADIR来指定zoneinfo的位置:导出PYTZ_TZDATADIR = / usr / share / zoneinfo

仅在未设置PYTZ_TZDATADIR的情况下,才压缩压缩的zoneinfo文件。

© www.soinside.com 2019 - 2024. All rights reserved.