naseeam
asked on
Isn't python program required to have .py extension?
Bitbake is a python program. Following guide shows how to setup BitBake.
https://a4z.bitbucket.io/docs/BitBake/guide.html
Form Linux command prompt, I invoke bitbake by simply typing bitbake. Since the location of this program is in PATH variable, bitbake runs. But how does python compiler know it's a python program. Aren't python programs required to have .py extension?
filename: bitbake
https://a4z.bitbucket.io/docs/BitBake/guide.html
Form Linux command prompt, I invoke bitbake by simply typing bitbake. Since the location of this program is in PATH variable, bitbake runs. But how does python compiler know it's a python program. Aren't python programs required to have .py extension?
filename: bitbake
#!/usr/bin/env python3
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
# Copyright (C) 2003 - 2005 Michael 'Mickey' Lauer
# Copyright (C) 2005 Holger Hans Peter Freyther
# Copyright (C) 2005 ROAD GmbH
# Copyright (C) 2006 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import os
import sys
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)),
'lib'))
try:
import bb
except RuntimeError as exc:
sys.exit(str(exc))
from bb import cookerdata
from bb.main import bitbake_main, BitBakeConfigParameters, BBMainException
if sys.getfilesystemencoding() != "utf-8":
sys.exit("Please use a locale setting which supports UTF-8 (such as LANG=en_US.UTF-8).\nPython can't change the filesystem locale after loading so we need a UTF-8 when Python starts or things won't work.")
__version__ = "1.40.0"
if __name__ == "__main__":
if __version__ != bb.__version__:
sys.exit("Bitbake core version and program version mismatch!")
try:
sys.exit(bitbake_main(BitBakeConfigParameters(sys.argv),
cookerdata.CookerConfiguration()))
except BBMainException as err:
sys.exit(err)
except bb.BBHandledException:
sys.exit(1)
except Exception:
import traceback
traceback.print_exc()
sys.exit(1)
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
And technically it is Windows that needs certain extensions to figure out what a file is supposed to do... Linux and Unix like OS's are a bit smarter at this...
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
For Windows... Actually, since some version of Python, the Python Launcher for Windows exists. It is installed into the C:\Windows\ directory as py.exe and pyw.exe, and the Python usual extensions are registered to launch the file through that launcher. You can also use it explicitly, and then the file with the source does not need the extension either -- like:
py test
where the test file contains the Python code. The Python Launcher also recognizes #! to launch the prescribed version of Python (if you have more versions installed side-by-side.
ASKER