<p>您可以使用<a href="https://docs.python.org/3/library/py_compile.html#py_compile.main" rel="nofollow">^{<cd1>}</a>模块。从命令行(<code>-m</code>选项)运行它:</p>
<blockquote>
<p>When this module is run as a script, the <em>main()</em> is used to compile all
the files named on the command line.</p>
</blockquote>
<p>示例:</p>
<pre class="lang-none prettyprint-override"><code>$ tree
.
└── script.py
0 directories, 1 file
$ python3 -mpy_compile script.py
$ tree
.
├── __pycache__
│ └── script.cpython-34.pyc
└── script.py
1 directory, 2 files
</code></pre>
<p><a href="https://docs.python.org/3/library/compileall.html" rel="nofollow">^{<cd3>}</a>提供了类似的功能,要使用它,您可以执行如下操作</p>
<pre><code>$ python3 -m compileall ...
</code></pre>
<p>其中<code>...</code><em>是要编译的文件或包含源文件的目录,递归遍历</em>。</p>
<hr/>
<p>另一个选项是导入模块:</p>
<pre class="lang-none prettyprint-override"><code>$ 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
</code></pre>
<p><code>-c 'import module'</code>与<code>-m module</code>不同,因为前者不会在<em>module.py</em>中执行<code>if __name__ == '__main__':</code>块。</p>