第一次调用pytz.timezone在virtualenv中很慢

时间:2013-12-10 17:13:50

标签: python virtualenv pytz

我在virtualenv中安装了pytz(v2013.8,但它发生在2013.b,2011k)。第一次打电话给

pytz.timezone("US/Eastern")

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

有没有人可以让它更快地运行?

4 个答案:

答案 0 :(得分:12)

我实际上是通过玩游戏并查看源代码来找到答案的。由于它从egg中获取时区设置,并且第一次调用时区必须检查所有时区文件是否存在,因此第一次调用可能会很慢,具体取决于操作系统如何查找这些文件。如果使用apt-get install python-tz安装pytz,那么调用命中未压缩文件并且非常快。如果使用easy_install pytz安装它,那么它会一遍又一遍地击中一个压缩文件并且速度较慢。

所以解决方案就是解压缩它。幸运的是,pip有一个方便的命令。

TL;博士

pip unzip pytz

答案 1 :(得分:1)

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

答案 2 :(得分:1)

我很难跑步

  

pip unzip pytz

因为它说无法找到包裹。我找到的解决方法是编辑setup.py文件并替换

  

zip_safe =假

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

  

python setup.py install

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

答案 3 :(得分:0)

您实际上可以通过设置环境变量PYTZ_TZDATADIR来指定zoneinfo的位置:

export PYTZ_TZDATADIR=/usr/share/zoneinfo

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