如何从Python脚本生成.pyc文件

10

我知道当Python脚本被导入到其他Python脚本中时,会创建一个.pyc文件。有没有其他方法可以通过使用Linux Bash终端来创建.pyc文件?


无法执行 $ python -c "import script" 吗? - Yichun
1
python -m compileall:该命令用于将 Python 源代码编译成字节码文件,使其更加难以被反向工程破解。 - Peter Wood
我认为你应该尝试使用“zipfile”来制作pyc文件。 这很容易做到。 你可以使用它来部署你的代码,而不需要源代码。 - huang
看一下 https://dev59.com/rW035IYBdhLWcg3wH8Ul#61899114 这个链接,它可能会对你在 Python3 中有所帮助。 - Prashant
2个回答

10

使用以下命令:

python -m compileall <your_script.py>

这将在同一目录下创建your_script.pyc文件。

你也可以传递目录参数:

python -m compileall <directory>

这将为目录中的所有 .py 文件创建 .pyc 文件。

另一种方法是创建另一个脚本:

import py_compile
py_compile.compile("your_script.py")

它还会创建名为your_script.pyc的文件。您可以将文件名作为命令行参数。


7
你可以使用py_compile模块。从命令行运行它(使用-m选项):

当这个模块作为脚本运行时,main()函数会用于编译所有在命令行上命名的文件。

例如:

$ tree
.
└── script.py

0 directories, 1 file
$ python3 -mpy_compile script.py
$ tree
.
├── __pycache__
│   └── script.cpython-34.pyc
└── script.py

1 directory, 2 files

compileall 提供了类似的功能,使用它的方法如下:

$ python3 -m compileall ...

其中...是需要编译的文件或包含源文件的目录,递归遍历。


另一种选择是导入该模块:

$ tree
.
├── module.py
├── __pycache__
│   └── script.cpython-34.pyc
└── script.py

1 directory, 3 files
$ python3 -c 'import module'
$ tree
.
├── module.py
├── __pycache__
│   ├── module.cpython-34.pyc
│   └── script.cpython-34.pyc
└── script.py

1 directory, 4 files

-c 'import module'-m module 是不同的,因为前者不会执行module.py中的if __name__ == '__main__':代码块。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接