<p>目前,您正在使用<code>scripts</code>标记来安装python代码。这将把您的代码放入<code>/usr/local/bin</code>,而不是<code>PYTHONPATH</code>。</p>
<p>根据<a href="https://docs.python.org/2/distutils/setupscript.html" rel="nofollow">the documentation</a>,当您想安装可执行脚本(您想从命令行调用的东西)时,可以使用<code>scripts</code>。否则,您需要使用<code>packages</code>。</p>
<p>我的方法是这样的:</p>
<ul>
<li>在库中安装<code>pyduino/pyduino.py</code>,类似于<code>packages=['pyduino']</code></li>
<li>创建一个包装器(shell或python),能够调用已安装的脚本并通过<code>scripts=[...]</code>安装它</li>
</ul>
<p>使用模块的<code>packages</code>标记将其安装在<code>/usr/local/lib/python...</code>中,即<code>PYTHONPATH</code>。这将允许您导入带有<code>import pyduino.pyduino.*</code>之类内容的脚本。</p>
<p>对于包装器脚本部分:</p>
<p>最佳实践是,如果脚本是从命令行触发的,则隔离要执行的代码,例如:</p>
<pre><code>def main():
# insert your code here
pass
if __name__ == '__main__':
main()
</code></pre>
<ul>
<li>假设上面有一个<code>def main()</code></li>
<li>在树中创建目录<code>scripts</code>(与<code>setup.py</code>处于同一级别)</li>
<li>创建文件<code>scripts/pyduino</code></li>
<li><p>在<code>scripts/pyduino</code>中:</p>
<pre><code>#!/usr/bin/env python
from pydiuno.pyduino import main
if __name__ == '__main__':
main()
</code></pre></li>
<li>在setup.py代码中添加一个'scripts=['scripts/pyduino']</li>
</ul>