2017-03-22 11 views
2

同じディレクトリにクラスをインポートして正しく動作させるのに問題があります。同じディレクトリにあるPython 3.5.1インポートクラス

私は現在bbsource

  • BBDriver.py
    • 次hiearchyあります
      • BouncyBallEnv.py
      • Console.py
    • 資源:
      • その他:
      • オブジェクト:
        • Ball.py
        • Platform.py

    私の問題はbbsourceディレクトリ内の2つのファイルの間です。私はいくつかを試してみました

    File "E:\PycharmProjects\BouncyBallPythonV0\bbsource\Console.py", line 5, in 
        from BouncyBallENV import BouncyBallEnv 
    ImportError: cannot import name 'BouncyBallEnv' 
    

    :私はダウンobjectsディレクトリおよびその逆のクラスへbbsourceディレクトリからのアクセスを取得する方法を考え出したが、私はConsoleクラスでfrom BouncyBallEnv import BouncyBallEnvしようとすると、私は次のエラーを取得します以下のようなもの:

    from bbsource import BouncyBallEnv

    from bbsource.BouncyBallEnv import BouncyBallEnv

    しかし、私はそれを動作させることはできません。

    私は次のことをやったとき、私は仕事にそれを得ることができる唯一の時間は次のとおりです。

    
    
        import bbsource.BouncyBallEnv 
        #Extra 
        print(bbsource.BouncyBallEnv.BouncyBallEnv.WIDTH) 
    
    

    しかし、私はその長い入力する必要がないように、それよりもそれを行うには良い方法がなければなりません私がBouncyBallEnvに静的変数を使用するたびに、printステートメントにあるステートメント。

    私はまだPythonのインポートがどのように動作するかについて非常に混乱していますので、これを行う方法についてはわかりません。ありがとうございました。

    注:Pythonの3.5.1

    答えて

    2

    あなたが必要なことを実行するには、別名である:

    import bbsource.BouncyBallEnv as bbe 
    #Extra 
    print(bbe.WIDTH) 
    

    、あなたはfrom ... import ...構文を使用してモジュールをインポートすることはできません。属性のみ。二番目に

    import <module> [as <alias>] 
    
    or 
    
    from <module> import <attribute> [, <attribute2>...] # import some attributes 
    from <module> import *        # import everything 
    

    、あなたが行っている可能性:それはこのように動作し

    from bbsource.BouncyBallEnv import WIDTH 
    # the variable WIDTH is directly loaded : watch out for collision ! 
    
    print(WIDTH) 
    
    1

    をそれはabosolue_importルールです。

    は、相対的な位置でモジュールにアクセスするために

    from .BouncyBallENV import BouncyBallEnv 
    

    を試してみてください。

    ほか、bbsourceディレクトリの下に__init__.pyファイル

    +0

    '__init __。py'ファイルには何が含まれますがすべきですか? Python 3では '__init __。py'ファイルが不要なパッケージの問題について、別の投稿で誰かから聞いていました。 – Ryan

    +0

    それは何も含まれていませんが、それは良いpraticeです – jerliol

    +0

    それはすべてのディレクトリに入るか、単に '.py'ファイルを含むディレクトリですか? – Ryan