安装后的project / bin,如何使用脚本

时间:2012-08-28 18:03:00

标签: python setuptools

我正在尝试学习Python分发包,但我自己似乎无法找出/bin部分。安装了Foo包,我可以使用from FOO import Foo来引用它。

例如,如果我有一个名为foo的项目,并且我有一个名为use-foo的脚本,在我之后 把'use-foo'放在我的foo/bin里面,我想如何使用它?

项目源文件/目录结构如下所示:

foo
-->FOO (source code for foo)
    -->Foo.py
-->bin (script uses Foo goes here)
    -->use-foo.py

我已尝试import use-foofrom foo import use-foo无效,相对路径?

添加setup.py:

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup

config = {
    'description': 'My Foo Project', 
    'author': 'Paul Liu',
    'url': 'URL to get it at.',
    'download_url': 'Where to download it.',
    'author_email': 'My email.',
    'version': '0.1',
    'install_requires':['nose'],
    'packages':['FOO'],
    'scripts':['bin/use-foo.py'],
    'name': 'foo'
}

setup(**config) 

1 个答案:

答案 0 :(得分:1)

只有源目录才能开发代码。它没有真正反映最终产品(已安装)表单,直到您通过其中一个可用命令构建(或手动将各种路径添加到您的env)。

要发展,你可以做的就是运行:python setup.py develop
这将在你的python site-packages中安装一个egg,它实际上只是一个返回源位置的链接。这意味着您可以主动编辑代码,它将反映在您的PYTHONPATH中。构建过程将包FOO放入PYTHONPATH,并将脚本中的所有内容复制到python bin。例如在我的机器上:

  

创建   /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/foo.egg-link   (链接到。)
  安装use-foo.py脚本到   /Library/Frameworks/Python.framework/Versions/2.6/bin

现在在use-foo.py中,您可以将FOO称为导入包,因为它将存在于python路径中。如果您选择不使用develop命令,则需要手动将foo/添加到PYTHONPATH,以便它会在下面找到FOO包。

最重要的是:在__init__.py包中添加FOO个文件(空)。这是python将其识别为包的必要条件。


手动环境路径

手动向shell环境添加路径可能如下所示(bash shell):

export PYTHONPATH=/path/to/foo:$PYTHONPATH
export PATH=/path/to/foo/bin:$PATH