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

Python 第一次调用pytz.timezone在virtualenv中速度很慢,python,virtualenv,pytz,Python,Virtualenv,Pytz,我已经在VirtualNV中安装了pytz(v2013.8,但它发生在2013.b,2011k)。第一次打电话给 pytz.timezone("US/Eastern") 大约需要4秒钟。在常规环境中,这基本上是瞬时的 有人有办法让它运行得更快吗?实际上,我是通过玩转和查看源代码找到答案的。由于它从egg中获取其时区设置,并且对timezone的第一次调用必须检查所有时区文件是否存在,因此第一次调用可能会很慢,具体取决于操作系统如何查找这些文件。如果pytz是使用apt get install

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

pytz.timezone("US/Eastern")
大约需要4秒钟。在常规环境中,这基本上是瞬时的


有人有办法让它运行得更快吗?

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

因此,解决方案是解压缩它。幸运的是,皮普有一个方便的命令

tl;博士


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

我很难运行

pip解压pytz

正如它所说,它找不到包裹。我发现的一个解决方法是编辑setup.py文件并替换

zip_safe=False

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

python setup.py安装


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

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

export PYTZ_TZDATADIR=/usr/share/zoneinfo

如果未设置PYTZ_TZDATADIR,则压缩的zoneinfo文件是只读的。

这在将来可能会非常有用,干得好!:)当您需要RPR时,考虑将其作为一个答案。自版本7.0.0以来,PIP中不再存在“unZip”命令。看见
export PYTZ_TZDATADIR=/usr/share/zoneinfo