これは私の最初の投稿です。
私は Python の学習を始めて以来、ここで投稿を読んでいますが、それは私の学習プロセスにとって大きな助けになっています。だから、私の質問の前に、皆さんに大きな感謝を伝えたいです!
質問:
cjklib パッケージを正常にインストールしました。その後、CEDICT 辞書も正常にインストールされました。しかし、CEDICT を使用しようとすると、常に次のようなエラーがスローされます。
>>> d = CEDICT()
......
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/default.py", line 335, in do_execute
sqlalchemy.exc.OperationalError: (OperationalError) unknown database "cedict_0" 'PRAGMA "cedict_0".table_info("CEDICT")' ()
>>>
問題を再現するには:
cjklib パッケージをインストールします。
cjklib-0.3.tar.gz をダウンロードして展開し、ディレクトリ Cjklib-0.3/cjklib/build/*.py (具体的には builder.py およびinit .py)内のファイルを更新します。
「from sqlalchemy.exceptions」を「from sqlalchemy.exc」に更新
$cd djklib-0.3/cjklib/build/
$sudo python setup.py install
$sudo installcjkdict CEDICT
$python
Python 2.7.3 (default, Apr 20 2012, 22:39:59)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from cjklib.dictionary import CEDICT
>>> d = CEDICT()
エラーは、次のように詳細に発生します。
>>> d = CEDICT()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/cjklib/dictionary/__init__.py", line 605, in __init__
super(CEDICT, self).__init__(**options)
File "/usr/local/lib/python2.7/dist-packages/cjklib/dictionary/__init__.py", line 532, in __init__
super(EDICTStyleEnhancedReadingDictionary, self).__init__(**options)
File "/usr/local/lib/python2.7/dist-packages/cjklib/dictionary/__init__.py", line 269, in __init__
if not self.available(self.db):
File "/usr/local/lib/python2.7/dist-packages/cjklib/dictionary/__init__.py", line 276, in available
and dbConnectInst.hasTable(cls.DICTIONARY_TABLE))
File "/usr/local/lib/python2.7/dist-packages/cjklib/dbconnector.py", line 444, in hasTable
schema = self._findTable(tableName)
File "/usr/local/lib/python2.7/dist-packages/cjklib/dbconnector.py", line 429, in _findTable
if hasTable(tableName, schema=schema):
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 2525, in has_table
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 2412, in run_callable
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 1959, in run_callable
File "build/bdist.linux-x86_64/egg/sqlalchemy/dialects/sqlite/base.py", line 567, in has_table
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 1450, in execute
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 1627, in _execute_text
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 1697, in _execute_context
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 1690, in _execute_context
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/default.py", line 335, in do_execute
sqlalchemy.exc.OperationalError: (OperationalError) unknown database "cedict_0" 'PRAGMA "cedict_0".table_info("CEDICT")' ()
>>>
トライアウト: 次のようないくつかの解決策を自分で試しました。
エラーが示すように、sqlite データベース ファイルでテーブルが見つからないため、次の行を追加して cjklib.conf ファイルを編集し、テーブルがここにあることを伝えました。
url = sqlite:////usr/local/share/cjklib/cedict.db
次に、テーブル CEDICT が見つかり、エラーのスローを停止しました。残念ながら、以下のコードを実行すると、別の種類のエラーがスローされ始めました。
>>> from cjklib import characterlookup
>>> cjk = characterlookup.CharacterLookup('T')
エラー:
>>> cjk = characterlookup.CharacterLookup('T')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/cjklib/characterlookup.py", line 118, in __init__
self.hasComponentLookup = self.db.hasTable('ComponentLookup')
File "/usr/local/lib/python2.7/dist-packages/cjklib/dbconnector.py", line 444, in hasTable
schema = self._findTable(tableName)
File "/usr/local/lib/python2.7/dist-packages/cjklib/dbconnector.py", line 429, in _findTable
if hasTable(tableName, schema=schema):
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 2525, in has_table
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 2412, in run_callable
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 1959, in run_callable
File "build/bdist.linux-x86_64/egg/sqlalchemy/dialects/sqlite/base.py", line 567, in has_table
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 1450, in execute
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 1627, in _execute_text
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 1697, in _execute_context
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 1690, in _execute_context
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/default.py", line 335, in do_execute
sqlalchemy.exc.OperationalError: (OperationalError) unknown database "cjklib_0" 'PRAGMA "cjklib_0".table_info("ComponentLookup")' ()
追加した行を削除すると、再び期待どおりに機能します。
ソリューション:
cedict.db と cjklib.db の両方を同時に読み取らせるにはどうすればよいですか? その場合にのみ、エラーをスローすることなく両方のケースで機能する可能性があると思います。
誰かが同様の状況に遭遇しましたか? そして、どのように解決しましたか?または、他に試してみたいことはありますか?いくつかのライトを当ててください!
前もって感謝します!