使用setuptools(或另一个pythongbuilder)处理顶级包

使用setuptools(或另一个pythongbuilder)处理顶级包,python,setuptools,distutils,egg,Python,Setuptools,Distutils,Egg,我正在编写一个小python应用程序。我希望能够轻松部署应用程序。我知道Python2.6将允许直接执行一个egg,如果egg的根上有一个main模块。事实上,我有工作 一个问题是,当我尝试使用argparse库时,如果不将该库安装到我的源目录(或将argparse.py中的符号链接到我的源目录),我就无法将该库包含在egg中,因为argparse模块位于顶级包中 如果我将它安装到名为“argparse”的子目录中,我必须像“from argparse import argparse”一样导入它

我正在编写一个小python应用程序。我希望能够轻松部署应用程序。我知道Python2.6将允许直接执行一个egg,如果egg的根上有一个main模块。事实上,我有工作

一个问题是,当我尝试使用argparse库时,如果不将该库安装到我的源目录(或将argparse.py中的符号链接到我的源目录),我就无法将该库包含在egg中,因为argparse模块位于顶级包中

如果我将它安装到名为“argparse”的子目录中,我必须像“from argparse import argparse”一样导入它,而不是像普通的“import argparse”一样导入它

我希望能够在egg中指定一个sitepackages类型目录,在那里我可以只安装第三方模块/包。使用setuptools(或其他一些鸡蛋生成器)有什么方法可以做到这一点吗


谢谢

我相信您可以创建一个名为toplevel的子目录,并在您的入口点中创建它

import sys
sys.path.insert(0, './toplevel')

不过还没有经过测试。

我最后做了类似的事情。我将使用过的libs安装到一个otherlibs包中,并在setup调用的包列表中包含otherlibs。在主模块中,我使用site.addsitedir()调用添加了每个目录。现在,我只需要找到一个好的框架来执行安装到otherlibs的子目录中。目前,我只使用一个shell脚本,但我需要更具声明性的东西来声明lib依赖项。