0

我正在尝试学习 Python 分发包,但/bin我自己似乎无法弄清楚这部分。已安装 Foo 包,我可以使用from FOO import Foo.

例如,如果我有一个名为 的项目foo,并且我有一个名为 的脚本,use-foo在我将 'use-foo' 放入 my 之后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) 
4

1 回答 1

1

只有源目录才是您开发代码的地方。在您通过可用命令之一构建它(或手动将各种路径添加到您的环境)之前,它并不能真正反映最终产品(已安装)的形式。

要进行开发,您可以运行以下命令:python setup.py develop
这将在您的 python 站点包中安装一个鸡蛋,它实际上只是一个返回到您的源位置的链接。这意味着您可以主动编辑代码,它将反映在您的 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 /版本/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
于 2012-08-28T18:49:25.893 回答