How can I manually generate a .pyc file from a .py file
Solution 1:
You can use compileall
in the terminal. The following command will go recursively into sub directories and make pyc files for all the python files it finds. The compileall module is part of the python standard library, so you don't need to install anything extra to use it. This works exactly the same way for python2 and python3.
python -m compileall .
Solution 2:
You can compile individual files(s) from the command line with:
python -m compileall <file_1>.py <file_n>.py
Solution 3:
It's been a while since I last used Python, but I believe you can use py_compile
:
import py_compile
py_compile.compile("file.py")
Solution 4:
I found several ways to compile python scripts into bytecode
-
Using
py_compile
in terminal:python -m py_compile File1.py File2.py File3.py ...
-m
specifies the module(s) name to be compiled.Or, for interactive compilation of files
python -m py_compile - File1.py File2.py File3.py . . .
-
Using
py_compile.compile
:import py_compile py_compile.compile('YourFileName.py')
-
Using
py_compile.main()
:It compiles several files at a time.
import py_compile py_compile.main(['File1.py','File2.py','File3.py'])
The list can grow as long as you wish. Alternatively, you can obviously pass a list of files in main or even file names in command line args.
Or, if you pass
['-']
in main then it can compile files interactively. -
Using
compileall.compile_dir()
:import compileall compileall.compile_dir(direname)
It compiles every single Python file present in the supplied directory.
-
Using
compileall.compile_file()
:import compileall compileall.compile_file('YourFileName.py')
Take a look at the links below:
https://docs.python.org/3/library/py_compile.html
https://docs.python.org/3/library/compileall.html
Solution 5:
I would use compileall. It works nicely both from scripts and from the command line. It's a bit higher level module/tool than the already mentioned py_compile that it also uses internally.