我正在尝试学习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-foo
,from 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)
答案 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