pytzを使用するアプリケーションの配布に問題があります。私はPy2Exeを使ってPythonソースから実行ファイルを作成しています。Py2ExeでコンパイルされたPythonアプリケーションでUnknownTimezoneError例外が発生しました
は私がいる問題の簡単な例では、私が持っている: pytz_test.py:
import pytz
tz_au = pytz.timezone("Australia/Sydney")
print tz_au
とsetup.pyで:
from distutils.core import setup
import py2exe
setup(console=['pytz_test.py'], options={"py2exe" : { 'packages': ['pytz'], } })
を私は、setup.pyを実行します:
python setup.py py2exe
実行ファイルをコンパイルします。作成したpytz_test.exeを実行している私が取得:
私は、タイムゾーン情報が実行可能にバンドル取得されていないので、それがあると仮定し、私はそれを実現するするかどうかはわかりません。
EDIT: 簡単な解決策はlibrary.zipに、Pythonのsite-packagesディレクトリ内pytzモジュールから、のzoneinfoディレクトリを追加することです。
from distutils.core import setup
import glob
import py2exe
options = {
"py2exe" : {
"compressed": 1,
"optimize": 2,
'packages': ['pytz'],
}
}
setup(console=['pytz_test.py'], options=options)
import pytz
import os
import zipfile
zipfile_path = os.path.join("dist/" 'library.zip')
z = zipfile.ZipFile(zipfile_path, 'a')
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()
また、setuptoolsの最新バージョンが必要です。特にpkg_resources 'import pkg_resources'は失敗してはなりません。 – sbaechler
正確に 'pkg_resources'が使われていますか?または単にそれをインポートすることによって? – Triztian