Вы можете сообщить системе, что ваш hw.pyo
файл является «исполняемым», например (в Linux, MacOSX или любой другой системе Unix-y), выполнив команду chmod +w hw.pyo
в командной строке терминала. Рассмотрим, например, следующий короткий и простой сеанс оболочки:
$ cat >hw.py
print('hello world')
$ python2.5 -O -c'import hw'
hello world
$ ./hw.pyo
bash: ./hw.pyo: Permission denied
$ chmod +x hw.pyo
$ ./hw.pyo
hello world
$
По умолчанию файлы .pyo
(и .pyc
) не помечены как исполняемые, поскольку они в основном предназначены для импорта, а не для непосредственного выполнения (действительно, обратите внимание, что мы явно используем оператор Python import
) создать файл .pyo
!); однако, как показывает этот пример, довольно просто сделать один из них «исполняемым в качестве основного сценария». Кстати, соблюдайте также:
$ cat >hw.py
print('hello world from ' + __name__)
$ python2.5 -O -c'import hw'
hello world from hw
$ chmod +x hw.pyo
$ ./hw.pyo
hello world from __main__
$
__name__
- это то, что сообщает модулю, является ли он import
ed (поэтому первый «привет мир» говорит «с hw
») или запускается как основной сценарий (так что второй говорит «с *» 1018 * "). По этой причине модули, предназначенные для использования в обоих направлениях, обычно заканчиваются на if __name__ == '__main__': main()
или тому подобное, где main
- это функция, которая, таким образом, вызывается, если модуль работает как основной сценарий (всегда лучше иметь весь существенный код выполняется в функции, а не на верхнем уровне модуля).