私はパッケージがPythonで動作する方法をgrokしようとしています。私の目標は、Pythonがインストールされていることだけを要求することです。ユーザは、単にスクリプトリポジトリをチェックアウトして実行できるだけです。Python:スクリプトとそれをインポートする方法で提供されるカスタムパッケージ
関連ファイル(ls TestPackage.py Mypackage/
の出力):TestPackage.pyの
TestPackage.py
Mypackage/:
__init__.py
SomeClass.py
内容:
from Mypackage import SomeClass
print "Hello from TestPackage.py"
the_instance = SomeClass()
the_instance.hi()
mypackageと/ の内容_ のinit _.py:
class InsideInitPy():
def hi(self):
print "Hi from InsideInitPy! (when importing package)"
InsideInitPy().hi()
mypackageとの
目次/ SomeClass.py:
class SomeClass():
def hi(self):
print "Hi from SomeClass in the package! (using explicit call)"
テストスクリプトpython TestPackage.py
を実行する:エラーを生成
Hi from InsideInitPy! (when importing package)
Hello from TestPackage.py
Traceback (most recent call last):
File "TestPackage.py", line 5, in <module>
the_instance = SomeClass()
TypeError: 'module' object is not callable
ラインがthe_instance = SomeClass()
あります。インポート時にHi from InsideInitPy! (when importing package)
がコンソールに書き込まれるため、パッケージが見つかるようです。
from Mypackage import SomeClass
from Mypackage import *
import Mypackage
TestPackage.py
に最初の行のこれらの変異体を使用して
どのように実施例を取得する(だけでなく、長所と短所の)ん
ユーザがTestPackage.pyと同じディレクトリにいるかどうかはインポートに影響しますか?
Pythonのエラーメッセージが有益です:だから、あなたはモジュール
MyPackage.SomeClass
からクラスSomeClass
をインポートすることができ、またを記述する必要があります。 ''モジュール 'オブジェクトが呼び出し可能ではない 'を取得した場合は、モジュールオブジェクトを呼び出しています。 – katrielalex
さて、なぜ私はそれを呼び出すことができなかったのか分かりませんでした。 – Deleted
私は上記の3つの質問に答え、回答を投稿するための知識を得るでしょう。提供された回答が私を助けたにもかかわらず、彼らは元の質問に答えなかった。私は検索の際にこの質問にヒットしたときに他の人を助けるかもしれないので、後で長い答えを自分で書く時間がかかるでしょう。 – Deleted