如何在virtualenv中使用cx_Freeze包含pytz?

时间:2015-03-30 19:23:53

标签: python virtualenv cx-freeze pytz

我不得不再次问这个问题,因为a related question在没有涉及virtualenv时解决了这个问题。

现在我有多个virtualenv,我想使用cx_Freeze包装在可执行文件中。我通常使用virtualenv python解释器运行我的cx_Freeze安装文件,但是当我尝试执行我的程序时,pytz没有找到文件,可能是因为如果你看到下面的错误,它会在原始目录中搜索它们virtualenv他们所在的位置。我检查了时区文件是否正确定位到zip文件中。

这是我尝试运行捆绑程序时收到的错误消息:

cserpell@e431:~/src/build/exe.linux-x86_64-2.7$ ./validate 
/home/cserpell/src/build/exe.linux-x86_64-2.7/library.zip/distutils/__init__.py:14: UserWarning: The virtualenv distutils package at %s appears to be in the same location as the system distutils?
Traceback (most recent call last):
  File "/home/cserpell/src/virtualenvtest/local/lib/python2.7/site-packages/cx_Freeze/initscripts/Console.py", line 27, in <module>
    exec(code, m.__dict__)
  File "scripts/validate.py", line 9, in <module>
  File "/home/cserpell/src/scripts/script.py", line 15, in <module>
    from common import time_util
  File "/home/cserpell/src/common/time_util.py", line 31, in <module>
    SCL_TZ = pytz.timezone('America/Santiago')
  File "/home/cserpell/src/virtualenvtest/local/lib/python2.7/site-packages/pytz/__init__.py", line 180, in timezone
    raise UnknownTimeZoneError(zone)
pytz.exceptions.UnknownTimeZoneError: 'America/Santiago'

1 个答案:

答案 0 :(得分:0)

我自己找到了答案。唯一需要的是在我的virtualenv中安装setuptools。为了记录,我在virtualenv中使用pip安装它是非常奇怪的,但是当我运行pip list或pip freeze时,它并没有显示setuptools作为要求,尽管它是针对cx冻结脚本的。 / p>