gri*_*yvp 16 python distutils setuptools
Python有能力通过运行它的setup.py脚本来"伪装"一个包develop而不是install.这会修改python环境,因此可以从它的当前位置导入包(它不会被复制到site-package目录中).这允许开发其他包使用的包:源代码被修改到位,并且通过简单的更改可用于其余的python代码import.
一切正常,除了该setup.py develop命令创建一个.egg-info文件夹与元数据相同的文件夹setup.py.混合源代码和临时文件不是一个好主意 - 需要将此文件夹添加到从vcs和结束备份系统开始的多个工具的"忽略"列表中.
是否可以使用setup.py develop但.egg-info在其他地方创建目录,因此原始源代码不会受到临时目录和文件的污染?
Mar*_*ers 17
setup.py develop在原地创造一个蟒蛇蛋; 它并没有 [修改]蟒蛇环境,让包可以导入从它的当前位置.您仍然需要将它的位置添加到python搜索路径或使用它所在的目录作为当前目录.
这是的作业develop命令用来创建一个就地卵,其可以包括在编译C的扩展,运行2to3的蟒转换过程来创建Python3兼容的代码,并且提供元数据的其他 Python代码可以依靠.在目录中将程序包作为egg安装时site-packages,也会包含相同的元数据.数据当然不是临时的(它是从您的setup.py文件中提取的,以便通过其他工具轻松解析).
目的是,您可以在更广泛的系统中使用您的包时依赖该元数据,该系统依赖于存在的元数据,同时仍在开发包.例如,在buildout开发部署中,我们经常使用mr.developer自动化获取给定包的源代码的过程,当我们需要处理它时,将其构建为开发蛋并在我们工作时将其绑定到部署中代码.
请注意,该.egg-info目录用于特定目的:向setuptools eco系统中的其他工具发出信号,告知您的软件包已安装并可用.如果您的包是您的设置中另一个鸡蛋的依赖项,那么该依赖项就会满足.pip并且easy_installbuildout不会尝试从其他地方取出鸡蛋.
除了创建.egg-info目录之外,该命令唯一的另一个功能就是在就地构建扩展.所以你要找的命令是:
setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)
这将完全相同,setup.py develop但遗漏了.egg-info目录.它也不会生成.pth文件.
无法仅生成.pth文件并省略了.egg-info目录生成.
从技术上讲,setup.py develop还将检查您是否site.py安装了setuptools 文件以支持命名空间包,但这与此无关.
| 归档时间: |
|
| 查看次数: |
10083 次 |
| 最近记录: |