<p>为此,我建议使用python打包(例如,[pip])。不管你喜欢什么样的包装方法,除非你喜欢。您的用户已经安装了python,因为他们已经被用来显式地将脚本传递给解释器。如果您对使用python打包感兴趣,请继续阅读。在</p>
<p>首先,我将把你的脚本和其他需要的处理放在一个包中。我们称之为<code>mylibrary</code>。你的项目应该看起来像:</p>
<pre><code>myproject
| README.rst
` myproject
| __init__.py
` capsall.py
</code></pre>
<p>保持<em>初始化py</em>简单,并确保可以导入它而不需要依赖关系。我用的是:</p>
^{pr2}$
<p>接下来,添加一个名为<em>设置.py在根上。这将定义您的包、它的元数据以及要安装到用户的<code>$PATH</code>中的脚本。以下将很好地工作:</p>
<pre><code>#!/usr/bin/env python
import setuptools
import myproject
setuptools.setup(
name='myproject',
version=myproject.version,
description='Package of useful utilities.',
long_description=open('README.rst').read(),
url='https://github.com/me/myproject',
author='Me',
author_email='me@example.com',
packages=['myproject'],
entry_points={
'console_scripts': ['capsall=myproject.capsall:main'],
},
license='BSD',
)
</code></pre>
<p>如果你打算上传到pypi.python.org,则至少需要那么多元数据。我建议也添加<code>classifiers</code>。关于写a<em>设置.py</em>是无价的。在</p>
<p>您最感兴趣的部分是<code>entry_points</code>关键字参数。它定义了调用包的各种方式。您正在寻找<code>console_scripts</code>,因为它创建安装到本地路径中的shell脚本。有关详细信息,请参阅<a href="https://setuptools.readthedocs.io/en/latest/setuptools.html#automatic-script-creation" rel="nofollow">setuptools documentation</a>。在</p>
<p>我在上面给出的<code>console_scripts</code>定义创建了一个名为<em>capsall</em>的脚本,该脚本调用<code>my project.capsall.main</code>函数。我会把你的代码重新打包到一个项目中。将脚本绑定到<em>main</em>函数中capsall.py公司</em>模块。然后生成一个源存储库并将其上载到pypi.python.org(<code>./setup.py sdist register upload</code>)。上传后,用户可以使用<code>pip install myproject</code>进行安装。在</p>
<p>很可能你有你不想给外界的代码。如果是这样,那么您可以生成一个源发行版并使tarball在内部服务器上可用<code>./setup.py sdist</code>将在<em>dist</em>目录中生成tarball。然后<code>pip install whatever/myproject-0.0.0.tar.gz</code>将安装脚本。在</p>