これは私の最初の投稿です。cjklibとCEDICTを正常にインストールした後、私はそれを使用するとエラーが発生します。なぜですか?
私は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)のファイルを更新します。
>>> 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")'()
>>>
入団テスト:エラーは以下のように、詳細には、発生した "sqlalchemy.exceptionsから"更新 "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()
は を私は、いくつかの解決策を自分で試してみましたlike:
エラーが示されたので、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の両方を読むことができますか?私は推測しています、それだけで、エラーを投げずに両方のケースでうまくいくかもしれません。
誰も同じような状況に遭遇しましたか?そしてそれをどうやって解決しましたか?それとも、他に何か心に留めておいてもらえますか?ちょうどいくつかの光を捨ててください!
ありがとうございます!
あなたの答えは呉梁にありがとうございました!それは完璧に動作し、あなたは素晴らしいです! – phoenixbai
@phoenixbai、正しい回答として選択してください。ありがとう。 – wuliang
ちょうどいいよ!私はここで新しいので、まだ人々を賞賛する方法を知らなかった! – phoenixbai