ファイルからすべてのメソッドをインポートして、パッケージとして使用する際に問題が発生しました。Pythonパッケージからメソッドをインポートする
myapp.py
mypackage/
mypackage/__init__.py
mypackage/mypackage.py
mypackage.py
の内部Iがmethod1()
とmethod2()
を持っている:私は、次があります。 myapp.py
の中で私はこれをしたい:
import mypackage
mypackage.method1()
これは動作しません。代わりに私はmypackage.mypackage.method1()
をする必要があり、私はそれを修正するために何をすべきか分からない。私が見つけた唯一の方法は、__init__.py
を削除し、mypackage.py
を__init__.py
に改名することです。これは正しくないようです。
すべてのメソッドをインポートするためにinitファイルに入れる必要があるので、パッケージ名を2回入力する必要はありません。
なぜそうは思わしくないのですか? 'mypackage'に2つのメソッドしかない場合は、' __init __。py'でそれらを定義するのはなぜですか?あるいは単にディレクトリを 'mypackage.py'で置き換えて、そこに書き込んでください。あなたのモジュールのディレクトリのオーバーヘッドは必要ありません。あるいは、それらを '__init __。py'に' import 'してください。 – jonrsharpe
これは単なる例であり、私は2以上の数を持っています。将来的には、より多くのファイルを組織化したい場合があります。私の質問は、 '__init __。py'でそれらをインポートする方法です。個々のファイル名を指定する必要はありませんか?私は 'から試しました。 import * 'と' import mypackage'を実行しますが、 'mypackage.method1()'を実行することはできません。そして、私はフォルダがより良いとは思わないが、ピピはそれをサポートしていないようだ。 – Dendory
'.mypackage import *'から?また:* "将来的に私は"あなたがYAGNIを読むべきであることを示唆しているかもしれません!シンプルなバージョンから始め、複雑になったら*実際に*する必要があることを発見したとき。 – jonrsharpe