0

root 権限を持たないコンピューターで Python スクリプトを実行しようとしています。そのために、Python 2.7 を使用するようにセットアップし、virtualenv必要な Parallel Python と SQLAlchemy の 2 つのパッケージを追加します。スクリプトを実行すると、次のエラーが表示されます。

(virtPython)thaddeus:recipes ab940$ python2.7 matchIngsParallel.py 
Starting pp with 8 workers
Reading ingredients into dictionary
Traceback (most recent call last):
  File "matchIngsParallel.py", line 65, in <module>
    for synonym, parentIng in session.query(IngSyn.synonym, IngSyn.parentIng): 
  File "build/bdist.macosx-10.6-intel/egg/sqlalchemy/orm/query.py", line 2227, in     __iter__
  File "build/bdist.macosx-10.6-intel/egg/sqlalchemy/orm/query.py", line 2242, in     _execute_and_instances
  File "build/bdist.macosx-10.6-intel/egg/sqlalchemy/engine/base.py", line 1449, in execute
  File "build/bdist.macosx-10.6-intel/egg/sqlalchemy/engine/base.py", line 1584, in _execute_clauseelement
  File "build/bdist.macosx-10.6-intel/egg/sqlalchemy/engine/base.py", line 1698, in _execute_context
  File "build/bdist.macosx-10.6-intel/egg/sqlalchemy/engine/base.py", line 1691, in _execute_context
  File "build/bdist.macosx-10.6-intel/egg/sqlalchemy/engine/default.py", line 331, in do_execute
sqlalchemy.exc.OperationalError: (OperationalError) no such table: ingSyns u'SELECT     "ingSyns".synonym AS "ingSyns_synonym", "ingSyns"."parentIng" AS "ingSyns_parentIng" \nFROM     "ingSyns"' ()

すべてが正しくインポートされているように見えますが、データベースに正しくアクセスしていません。

スクリプトは次のとおりです。

from assignDB import *
from sqlalchemy.orm import sessionmaker
import pp, sys

ppservers = ()

job_server = pp.Server(ppservers=ppservers)

print "Starting pp with", job_server.get_ncpus(), "workers"

print "Reading ingredients into dictionary"
ingreds = {}
for synonym, parentIng in session.query(IngSyn.synonym, IngSyn.parentIng): 
    ingreds[synonym] = parentIng
print "Finished reading ingredients"

(このコードは短縮されていますが、エラーが発生する場所が含まれています)

assignDB次のようになります。

from sqlalchemy import Column, Integer, String, ForeignKey, create_engine, Table
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, backref, sessionmaker
from sqlalchemy.dialects.sqlite import DATETIME, REAL

engine = create_engine('sqlite:///recDB.db')
Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base()

その後にクラス定義が続きます。

他の virtualenv を含む他のコンピューター (ただし、root アクセス権がある) でこのスクリプトを試してみましたが、正常に動作します。何がうまくいかないのか、私は非常に混乱しています!

4

1 に答える 1

1

スクリプトはデータベースに問題なくアクセスできますが、テーブルがないようです。別のマシンからスクリプトをコピーしたと思いますが、SQLite データベース ファイルもコピーしましたrecDB.dbか?

于 2012-07-20T11:43:09.987 に答える