exe与pytz-2018.3.dist无法正常工作。引发UnknownTimeZoneError

时间:2018-03-21 13:53:27

标签: python-2.7 py2exe pytz

我在使用pytz lib的脚本中构建exe时遇到问题。我经常收到错误:

File "pytz\__init__.pyc", line 180, in timezone UnknownTimeZoneError: 'Europe\Ljubljana'

无论我如何构建exe,我都会收到此错误。运行脚本有效。我尝试了在这里和其他网站上发布的所有建议。

我的setup.py文件:

from distutils.core import setup
import os.path
try:
    import py2exe
    has_py2exe = True
except ImportError, e:
    has_py2exe = False

myScript=__import__("myScript")

options = {'py2exe': {'packages': ['pytz']}}

options['py2exe'] = {'dist_dir': 'dist'}
setup(
    name="myScript",
    version=myScript.CONST_VERSION,
    console=[{
        'script': 'myScript.py',
        'copyright': 'None',
        'company_name': 'None'
    }],
    options=options,
)

if has_py2exe:
    import zipfile
    zipfile_path = os.path.join(options['py2exe']['dist_dir'], 'library.zip')
    z = zipfile.ZipFile(zipfile_path, 'a')

    import pytz
    assert (pytz.__file__.endswith('__init__.pyc') or pytz.__file__.endswith('__init__.py')), pytz.__file__
    zoneinfo_dir = os.path.join(os.path.dirname(pytz.__file__), 'zoneinfo')
    disk_basedir = os.path.dirname(os.path.dirname(pytz.__file__))
    for absdir, directories, filenames in os.walk(zoneinfo_dir):
        assert absdir.startswith(disk_basedir), (absdir, disk_basedir)
        zip_dir = absdir[len(disk_basedir):]
        for f in filenames:
            z.write(os.path.join(absdir, f), os.path.join(zip_dir, f))
    z.close()

这将构建exe并将zoneinfo目录和所有时区文件包含到library.zip。

我只在一个函数中使用pytz,我将CEST时间戳转换为UTC时间戳以存储在服务器上。

功能:

from datetime import datetime
import pytz

def date_time_utc(date_str):
    date_tz = pytz.timezone("Europe/Ljubljana")

    fmt = '%Y-%m-%d %H:%M:%S'
    date_str_dt_object = datetime.strptime(date_str, fmt)

    date_str_dt_object = date_tz.localize(date_str_dt_object)
    date_utc = date_str_dt_object.astimezone(pytz.timezone('UTC'))

    return date_utc.strftime(fmt)

pytz的设置脚本来自here。所有其他内容如this script和任何其他建议的修复都会引发完全相同的错误。 有没有人想出如何使这个工作?

0 个答案:

没有答案
相关问题