setup.py develop
就地创建一个 python 蛋;它不会[ 修改] python 环境,因此可以从当前位置导入包。您仍然必须将其位置添加到 python 搜索路径或使用它所在的目录作为当前目录。
命令的工作是develop
创建就地 egg,其中可能包括编译 C 扩展、运行 2to3 python 转换过程以创建 Python3 兼容代码,以及提供其他python 代码可能依赖的元数据。当您将软件包作为 egg 安装到您的site-packages
目录中时,相同的元数据也包含在其中。数据当然不是临时的(它是从您的setup.py
文件中提取的,以便其他工具解析)。
这样做的目的是,当您在更广泛的系统中使用您的包时,您可以依赖该元数据,该系统依赖于存在的元数据,同时仍在开发包。例如,在构建mr.developer
开发部署中,当我们需要处理给定包时,我们经常使用自动化获取源代码的过程,这将其构建为开发蛋并在我们工作时将其绑定到部署中编码。
请注意,该.egg-info
目录具有特定用途:向 setuptools 生态系统中的其他工具发出信号,表明您的软件包已安装且可用。如果您的包是您设置中另一个 egg 的依赖项,则满足该依赖项。pip
并且easy_install
buildout 不会尝试从其他地方取鸡蛋。
除了创建.egg-info
目录之外,该命令唯一要做的另一件事就是就地构建扩展。因此,您正在寻找的命令是:
setup.py build_ext --inplace
这将做完全相同的事情,setup.py develop
但不包括.egg-info
目录。它也不会生成.pth
文件。
没有办法只生成.pth
文件而忽略.egg-info
目录生成。
从技术上讲,setup.py develop
还将检查您是否site.py
安装了 setuptools 文件以支持命名空间包,但这与此处无关。