2009-08-31 31 views
0

ここにすべてのコードを貼り付けることが可能かどうかわかりませんが、私はthis git repoのコードを見ています。このPythonコードはどのように機能しますか?

あなたは彼らが行う例を見れば:

ec2 = EC2('access key id', 'secret key') 

...しかし、何のEC2クラスがありません。しかし、libcloud \ providers.pyのように見えるのは、EC2をlibcloud \ drivers \ ec2.pyにあるEC2NodeDriverにマップするdictです。正しいマッピングはget_driver(provider)によって計算されますが、そのメソッドはどこでも呼び出されないようです。

私はPythonの新機能ですが、明らかにプログラミングには向いていません。私はこれを理解するためにドキュメントで何を調べておくべきかについてもわからない。ありがとう。

答えて

5

example.py読み取りimport声明を含んでいます。しかし、この場合には、libcloud.driversは実際にEC2libcloud/drivers/でファイル__init__.pyで定義されるべきであることを意味パッケージ(がモジュールが含まれているPythonのパッケージ)、ですが、そうではありません。これは、この具体的なケースでは、実際のサンプルコードが間違っていることを意味します。 (コードをダウンロードして、example.pyを実行しているときにインポートエラーが発生しています。ご覧のとおり、ファイルlibcloud/drivers/__init__.pyには定義がまったく含まれていません。少なくともEC2の定義が含まれています)

0

libcloud \ examples.pyをチェックすると便利です。私はこれを見た:

from libcloud.drivers import EC2, Slicehost, Rackspace 

Pythonのインポート 'ステートメントはlibcloud.driversモジュールから、この場合には、他のPythonモジュールからクラスにもたらします。

from libcloud.drivers import EC2, Slicehost, Rackspace 

これはEC2クラスはlibcloud.driversモジュールからインポートされることを意味します

関連する問題