2017-09-14 11 views
-2

現在のディレクトリに__init__.pyというファイルがあります。__init__.pyが実行される状況は?

このファイルが実行される状況の完全なリストが必要です。

最初のケースは

同じディレクトリに script.pyで書かれ
import __init__ 

と、このファイルが実行されます。

他の場合はどうなりますか?

+2

'import __init__'は本当に奇妙です。たぶんあなたは '輸入したい。として...?その内容を利用するのではなく、モジュールを "実行する"ことは、(インポートに悪影響を及ぼすモジュールが吸う)設計が悪いことを示しています。関数を記述し、( 'from。import main')をインポートして呼び出すことを検討してください。 – Ryan

+0

私はこれを不明瞭にしています。あなたはあなたが書いたくないことを言ってきましたが、何を書こうと思っていますか?あなたはそれを達成したいですか?最小の実例を書くことができますか? – ymbirtt

+0

これは私の質問です:私は__init__をインポートしたくないです、私はそれを自動的に実行します。 – Dims

答えて

0

__init__.pyファイルは、それに対応するパッケージをインポートするときに実行されます。ファイルsome_package\__init__.pyimport some_packageのときに実行されます。サブモジュールをパッケージからインポートすると、パッケージが最初にロードされます。したがってimport aa.bb.ccは、aa.bbaa.bb.ccをロードする前にaaをロードします(したがってaa/__init__.pyを実行します)。

some_packageというフォルダは、検出可能である必要があります。つまり、sys.pathのいずれかのフォルダに存在する必要があります。これには現在のディレクトリが含まれます。

スクリプトを実行するだけで(python some_script.py)、同じフォルダにファイル__init__.pyが存在する場合、現在のフォルダはパッケージ自体ではないため、何も意味しません。 (もちろん、パッケージ内に存在するスクリプトを実行する場合は例外です)。

+0

一つ追加:パッケージを実行できるようにするには、__main__.pyファイルを作成することができます](https://stackoverflow.com/questions/4042905/what-is-main-py)) – Nemelis

関連する問題