1

私はPythonを初めて使用し、奇妙なエラーが発生します。私は開発にEclipse/PyDevを使用し、EclipseとコマンドラインでPython2.7.3を使用しています。いくつかのモジュールを作成しました。すべてのフォルダーには、init.pyファイルとその他のソースファイルがあります。__name__ == '__main__'from eclipseでファイルを実行しようとすると正常に動作しますが、コマンドラインから

python models.py

Traceback (most recent call last):
  File "models.py", line 8, in <module>
    from database import uuid_generator
ImportError: No module named database

誰かが私に何が問題になるのか手がかりを与えることができますかここに画像の説明を入力してください

4

3 に答える 3

3

database親ディレクトリがsys.path(pythonpath) にありません。python -mdatabase.uuid_generator親 (最上位) ディレクトリでスクリプトを実行してみてください。または、ラッパー スクリプトを作成します。

from database.uuid_generator import main

main()

databaseそして、それをの親 (トップレベル) ディレクトリに置きます。このスクリプトを呼び出すと、そのディレクトリが自動的に追加されるため、ディレクトリまたは環境変数sys.path内のモジュールを変更することなくすべてが機能します。databasePYTHONPATH

__init__.py(Python パッケージではなく) を含まないトップレベルのディレクトリのみがsys.path含まれている必要がありdatabaseますsys.path

不注意のトラップを参照してください。

于 2012-12-25T02:11:58.973 に答える
2

どうやらEclipseはデータベースディレクトリをモジュール検索パスに追加したようです。

スクリプトを変更せずに同じ効果を得るには、データベースへのパスを $PYTHONPATH 環境変数に追加します。

スクリプトの変更を受け入れる場合は、関連するモジュールをインポートした後、これを一番上に追加できますsys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

テストされていないハック

代わりに、以下のJFSebastianの回答とコメントを参照してください

于 2012-12-25T01:37:06.010 に答える
1

代わりにこれを使用してみてください

from uuid_generator

編集: uuid_generator.py が models.py と同じフォルダーにあることを確認してください

于 2012-12-25T01:34:45.557 に答える