SSブログ
RSS [RSS1.0] [RSS2.0]
共謀罪を含む改悪組織犯罪処罰法は
【「共謀罪」法 衆参両院議員の投票行動(東京新聞 2017/6/16)】

Windows のユーザー名が日本語だとGAEのランチャーでエラーになる

 Windows XPで利用していたGAEのランチャー(GoogleAppEngineLauncher.exe、以下GAELauncher)をWindows 7で使うことにしたのだが、python 2.7.9 と GoogleAppEngine 1.9.17 をインストールした後に試してみたら、正常に機能しなかった。
 まず、Windows XP の時に動作してデプロイ済みのアプリをドキュメントフォルダにおいてGAELauncherで読み込んでRunをクリックしたら、いつまでもRunが終了しない。クローズボタンでGAELauncherを強制終了したら、今度はGAELauncherが起動しなくなった。この問題はGoogleで検索したら答えがすぐに見つかり、C:\Users\[ユーザー名]\Google ディレクトリ内のgoogle_appengine_projects.iniの設定に問題があるらしく、私の場合はgoogle_appengine_projects.iniを削除したら起動できるようになった。ただ、GAELauncherでアプリを再び読み込まなければいけなくなるので、それが嫌な場合は削除するよりも編集した方が良いかもしれない。GAELauncherでアプリが起動しなくなった原因はGoogleで検索しても見つからなかったが、私がGAEを使い始めた時にお世話になった【GAEでcronを動かすメモ | Re*lier】には次のように書いてある。

【ファイルを作る】
GAEで使うファイルだけを入れる、専用のフォルダを用意します。
GAEのSDKをインストールすると付いてくるGAE Launcherをデプロイ(後述)に使う場合は、このフォルダはパスに日本語の入らない場所に置いて下さい。
(例えばユーザー名が日本語の場合、マイドキュメント配下に入れることができない、ということです)
ややこしくてよく分からない場合はCドライブ直下に置いてしまうのが手っ取り早いかと思われます。
ちなみに、フォルダのパスに日本語が含まれていると、Launcherがエラーを起こして起動すらしてくれなくなります
こうなった場合はC:\Documents and Settings\ユーザー名\Google 内のgoogle.appengine.project.iniを削除すると復活してくれます。
GAEでcronを動かすメモ | Re*lier

 私の場合、Windows 7のユーザー名が日本語だった。Windows XPではユーザー名に2バイト文字(日本語など全角文字)は使ってなかったし、GAELauncherの入ったgoogle_appengineフォルダの入ったGoogleフォルダを起動ドライブではなくDドライブの直下において、アプリもそのGoogleフォルダの中に入れておいた。GAELauncherが起動すらしてくれなくなった後、私はアプリの入ったフォルダを C:\Users に移動した。Cドライブ直下に置いても良かったが、毎日バックアップするのは C:\Users だけなので、そちらに置いた。これで、GAELauncherが起動すらしてくれなくなるトラブルはなくなり、Runが終了しないトラブルもなくなった。

 しかし、今度はアプリをGAELauncherでRunすると、速やかにエラーを返すようになった。当然、Browseもできない。ローカル環境でアプリの動作を確認できなかった。Logsボタンでエラーを確認すると sqlite3.OperationalError: unable to open database file と書いてある。Googleで検索して解決した人の記事を読んでもよく分からない。データベースへのアクセス権の問題のような気がしたので、フォルダのプロパティのセキュリティタグでアプリのフォルダやGAELauncherの入ったフォルダなどを全てのユーザーに対して「フルコントロール」にしてみたが解決しない。アクセス権の設定方法が間違っているのかと思ったが、日本語で書かれたページだけでなく諦めて英語で書かれたページを読んでみた。
 sqlite3.OperationalError: unable to open database file の解決策は、【Issue 11649 - googleappengine - sqlite3.OperationalError: unable to open database file】で見つかった。

#5 shobh...@google.com

Hi,

Can you give a try to this solution given in the link below [1][2]:

[1] http://stackoverflow.com/a/28348962/4525957
[2] https://code.google.com/p/googleappengine/issues/detail?id=7717#c14

Let me know, because the error you are getting even i am unable to reproduce it as i tried on Windows 8.


#6 minsung....@gmail.com

thanks shobh...

I did resolve by [1]

I modified System Attributes
TEMP and TMP (User Variables)

As-Is TEMP is %username%/appdata/local/temp
TMP is %username%/appdata/local/tmp

so, I modified
To-Be
TEMP is C:/Temp
TMP is C:/Temp

and my username is not english, it is korean...

Change username or change Environment TEMP or TMP values

【Issue 11649 - googleappengine - sqlite3.OperationalError: unable to open database file - Google App Engine - Google Project Hosting】

 minsungさんが読んで解決したウェブページ[1]には次のように書いてある。

Solve:
Change username to none Unicode or
Change the tmp and temp environment variable value to e:\ or
In the cmd prompt, do:

Change env var value
Set temp=e:\
Set tmp=e:\
2: run gae
D:\Program Files (x86)\Google\google_appengine\launcher\GoogleAppEngineLauncher.exe

Reason:
In datastore_sqllite_stub.py,
In def __init__
Before the self.__connection = sqlite3.connect:
Add the following code:

f = open( 'e:/tmp/a.log', 'w' )
f.write( self.__datastore_file )
f.write( '\n' )
for name in os.environ.keys():
f.write( '\n' )
v = os.environ[name]
f.write( name )
f.write( ' ' )
f.write( v )
f.close()
self.__datastore_file = 'e:/tmp/datastore.db'

According to the code, the database file is located in:
c:\users\%username%\appdata\local\temp\appengine.xgogo\datastore.db
which equal to:
%TEMP%\ appengine.xgogo\datastore.db
Where the %Temp% is the environment variable.
When username have Unicode characters, make failed.

python - GAE, sqlite3.OperationalError: unable to open database file - Stack Overflow

 要するに、GAELauncherは c:\users\%username%\appdata\local\temp フォルダの中に appengine.アプリケーション名 のフォルダを作り、その中の datastore.db にアクセスしようとして %username% が日本語など全角文字だと unable to open database file となるらしい。私の場合も appengine.アプリケーション名 のフォルダの中に datastore.db、logs.db、search_indexes、xsrf という4個のファイルが入っていた。
 GAELauncherが利用するtempフォルダの位置を変えるにはシステムのプロパティでユーザー環境変数を変えるのが簡単そうで、minsungさんもその方法で解決したらしい。私の場合は次の通り。

 まずはコントロールパネルから「システムのプロパティ」を開く。
システムのプロパティ

 次に「システムのプロパティ」の「詳細設定」タブの「環境変数」をクリックして「環境変数」ウインドウを開く。すると、例えば次のようにユーザー環境変数の TEMP と TMP の値が %USERPROFILE%\AppData\Local\Temp になっている。
変更前の環境変数

 「編集」をクリックしてユーザー環境変数の TEMP と TMP の値を次のように例えば C:\temp に変更して「OK」をクリックする。
変更後の環境変数

 同じPCを複数のユーザー名で利用している場合は、全てのユーザーでユーザー環境変数を同じ C:\temp にするわけにはいかないだろうから、例えば C:\temp\半角英数のユーザー名 にすれば良い。

 この環境変数の変更はシステムのプロパティを変更するので少し勇気がいるが、GAELauncher以外でも同じ問題でエラーが起こる可能性があり、ユーザー名を日本語にしている人は変えておいた方が良いのかもしれない。

 ただし、ユーザー名のテンポラリフォルダで、ユーザー名を2バイト文字(全角)にしている場合、問題が起きることがある。海外製のソフトウェアでは、2バイト文字を認識できずに、インストールなどの作業が行なえないことがあるのだ。

 このテンポラリフォルダは「システムのプロパティ」から以下の手順で任意の場所へ変更可能なので、2バイト文字のユーザー名を利用している場合は変更しておくとよい。

 なお、変数として「TEMP」「TMP」があるが、ソフトウェアによって使用する変数が異なるので、両方変更しよう。

ITmedia エンタープライズ:Windows Tips「テンポラリフォルダの位置を変更したい」

nice!(0)  コメント(0)  トラックバック(0) 
カテゴリー:サイトを見て
共通テーマ:パソコン・インターネット

読者の反応

nice! 0

sonet-asin-area

コメント 0

コメントを書く 

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。
captcha

トラックバック 0

トラックバックの受付は締め切りました