Dalam python3:

  • Apa perbedaan antara memanggil python path/to/file.py dan python -m path.to.file ?

  • Bagaimana pengaruhnya terhadap direktori kerja? ( os.getcwd() )

  • Apakah itu memiliki tautan dengan ada / tidaknya __init__.py file terletak di path/to ?

Saya terkejut dengan betapa sedikit informasi yang saya temukan tentang pertanyaan-pertanyaan ini. Mungkin saya tidak mencari dengan istilah yang benar? Terima kasih sebelumnya!

1
Julep 15 Januari 2020, 01:47

2 jawaban

Jawaban Terbaik

Apa perbedaan antara memanggil python path/to/file.py dan python -m path.to.file ?

Python -m module_name adalah jalan pintas untuk memanggil modul tertentu. Seringkali ini adalah paket terinstal dengan modul __main__.py di dalamnya. (mis. python -m pip memanggil pip/__main__.py

Jadi python -m pip sama dengan python path/to/my/python/lib/site-packages/pip/__main__.py

Bagaimana pengaruhnya terhadap direktori kerja? ( os.getcwd() )

Itu tidak

Apakah itu memiliki tautan dengan ada / tidaknya file init.py yang terletak di path/to ?

Pertama: Mungkin ada beberapa kebingungan yang perlu diselesaikan: python -m tidak mengambil jalur sebagai argumen. Dibutuhkan name modul untuk dieksekusi.

Jadi, jawaban singkatnya: tidak.

Jawaban panjang: bagaimana sebuah modul dieksekusi dengan nama dengan python -m tergantung pada apakah itu sebuah paket atau bukan. Kehadiran __init__.py dapat menunjukkan bahwa direktori adalah nama sebuah paket, seperti pip, sehingga akan mencari __main__ di dalam paket.

1
sytech 14 Januari 2020, 23:35
python -m ...

Digunakan untuk menjalankan modul pustaka python, seperti pip, IPython dll.

python file.py

Namun digunakan untuk menjalankan file dengan juru bahasa python.

2
Aljaž Medič 14 Januari 2020, 22:51