<p>最简单的方法是在<code>setup.py</code>脚本中使用<code>setuptools</code>,并使用<code>entry_points</code>关键字,请参阅<a href="http://setuptools.readthedocs.io/en/latest/setuptools.html#automatic-script-creation" rel="nofollow">Automatic Script Creation</a>的文档。在</p>
<p>更详细地说:您创建一个<code>setup.py</code>,如下所示</p>
<pre><code>from setuptools import setup
setup(
# other arguments here...
entry_points={
'console_scripts': [
'foo = my_package.some_module:main_func',
'bar = other_module:some_func',
],
'gui_scripts': [
'baz = my_package_gui:start_func',
]
}
)
</code></pre>
<p>然后在<code>setup.py</code>存在的目录下创建其他Python包和模块,例如,按照上面的示例:</p>
^{pr2}$
<p>然后跑</p>
<pre><code>$ python setup.py install
</code></pre>
<p>或者</p>
<pre><code>$ python setup.py develop
</code></pre>
<p>不管怎样,都会为您创建新的Python脚本(不带<code>.py</code>后缀的可执行脚本),这些脚本指向您在<code>setup.py</code>中描述的入口点。通常,它们位于Python解释器的“可执行二进制文件所在的目录”的概念中,这通常已经在您的路径上了。如果您使用的是虚拟环境,那么<code>virtualenv</code>会诱使Python解释器认为该目录是<code>bin/</code>,位于您定义virtualenv的任何地方。按照上面的示例,在virtualenv中,运行前面的命令应该会导致:</p>
<pre><code>bin
├── bar
├── baz
└── foo
</code></pre>