私のプログラムエントリポイントを__main__.py
から別のファイルに配置すると便利です。以下は、同じパッケージ(test_1
)にある2つのサンプルファイルは、以下のとおりです。__main__.py動作Python 2と3の動作が異なります
__main__.py:
import sys
from main import main as entry_point
if __name__ == '__main__':
script_name = sys.argv[ 0 ]
print("Script name: {}".format(script_name))
sys.exit(entry_point(sys.argv[ 1: ]))
main.py:
import sys
def main(args = None):
if args is None:
args = sys.argv[ 1 : ]
print("Program arguments are: {}".format(str(args)))
return len(args)
python3 -m test_1 1 2 3 4
でスクリプトを起動するときに、私は次のエラーを取得する:「はImportErrorを: 'main'という名前のモジュールはありませんが、python2 -m test_1 1 2 3 4
で呼び出されると、スクリプトを実行すると予想される動作が発生します。
なぜインポートがpython2(2.7.12)とpython3(3.5.2)で異なるのですか?達成しようとしている動作を達成するためには何が必要ですか?
https://stackoverflow.com/questions/12172791/changes-in-import-statement-python3 –
@TavianBarnesありがとうございます。私はPython 3で働いていた '__main __。py'ファイルで相対的なインポートを認識しませんでした。 – FluxIX