4

私はゲームフレームワークを書いています。これが私の現在のファイル構造です:

src/
  framework/
    __init__.py
    util.py
    render.py
    game.py
  pong.py

import game単純に、またはファイルimport renderから直接実行できるようにしたい。pong.pyこれを達成するための最良の方法は何ですか?当初、util.py, render.py, game.pyモジュールはsrcフォルダー内にありましたが、整理のために別のフォルダーに配置することにしました。私はパッケージングの慣習にかなり慣れていないので、これが物事を行うための推奨される方法であるかどうかはわかりません。

4

1 に答える 1

7

これを行う最善の方法は、まったく行わないことです。最初にそれらを移動した正確な理由 (整理のため) から、それらを別のモジュールに配置する必要があります。コードのようにモジュールを参照する場合は、次のようgameにします。

from framework import game

game.foo()

一般に、これを行うときは、システム ライブラリまたはスクリプトが実行されているフォルダーのいずれかであるimport gameという期待を提供しています。gameそうでないと、人が離れていきます。フレームワークをシステム ライブラリにするとしたら、それをutilgame、およびの 3 つの別個のライブラリとして持つことはありrenderません。それを 1 つのライブラリにパッケージ化し、それframeworkをサブモジュールと共に配布します。したがって、あなたは本当にこれをしたくないでしょう。

しかし、私が知っているように、非回答はイライラする可能性があります。本当に先に進みたい場合は、モジュールをインポートするたびにPythonがチェックするframeworkフォルダーをに追加できます。sys.path

import sys
sys.path.append("framework")

import game
于 2012-09-18T00:56:54.463 に答える