Ответ 1
Существует два способа запуска Python 3 script.
-
python fibo.py
: Аргумент - это имя файла.py
. Точки являются частью имени файла. -
python -m fibo
: Аргумент - это имя модуля Python, без.py
. Точки указывают пакеты;fibo.py
означает "модульpy
в пакетеfibo
."
Это небольшое различие для простого script, подобного вашему. Но для чего-то большего или более сложного он оказывает важное влияние на поведение оператора import
:
- Первая форма приведет к тому, что
import
будет искать каталог, в котором живет файл.py
(и затем поиск в других местах, включая стандартную библиотеку, см.sys.path
для полного списка). - Вторая форма сделает
import
поиск в текущем каталоге (а затем и в других местах).
По этой причине в Python 3 требуется вторая форма для большинства установок, которые включают пакеты (а не просто свободные модули в каталоге), поскольку родительский пакет script может не быть импортируемым в первой форме, что может привести к поломке вещей.
Но для простого script, подобного этому, любая форма в порядке.