6

Windows 7 の cygwin でログ モジュールを使用する python スクリプトを実行しています。dateコマンドは正しい時刻を報告します。

$ date
Tue, Aug 14, 2012  2:47:49 PM

ただし、python スクリプトは 5 時間オフです。

2012-08-14 19:39:06,438: Done!

スクリプトのロギングを構成するとき、特別なことは何もしません。

logging.basicConfig(format='%(asctime)-15s: %(message)s', level=logging.DEBUG)

誰かが何が起こっているのか、どうすれば修正できるのか教えてもらえますか?

4

2 に答える 2

8

日付/時刻モジュールをインポートする前に、Pythonスクリプトで環境「TZ」の設定を解除する必要があります。これはcygwinによって設定されますが、Windowsでは理解されません。

if os.getenv("TZ"):
    os.unsetenv("TZ")
于 2012-08-16T01:27:49.317 に答える
4

TZ環境変数を設定すると、Cygwin の Python は GMT (UTC) タイムゾーンで動作するようです。これはTZ、Windows ボックスと同じタイムゾーンに設定されている場合でも当てはまります。

回避策として、unset TZPython を呼び出す前に bash シェルを呼び出すと、Python は Windows タイムゾーンを使用します。私にとっては、Python 内の ENV 変数の削除は機能せず、Python を起動する前に削除する必要がありました (削除os.environ['TZ']は、時間関連のモジュールをインポートする前に Python プロセスのできるだけ早い段階で行われたとしても、おそらくインポートする必要がosあり、おそらくこれにより、タイムゾーンが UTC になる Cygwin/Python の「バグ」が発生しますか?)。

unset TZ.bash_profile ファイル ( /home/<user>Cygwin がインストールされている場所のサブディレクトリ) に追加することで、修正を自動化できます。

于 2014-11-07T00:09:30.900 に答える