我在 python 项目组织方面没有很多经验,但我一直在尝试使用 pyproject.toml 和结构来遵循现代最佳实践,如这个 video(减去 ci 位)。
这最终是ArcGIS Pro的地理处理工具,尽管我尝试从ArcGIS Pro的“后端”调用中抽象出该工具的逻辑,以便我将来可以创建其他后端,例如QGIS或geopandas和光栅。
但是,允许与 ArcGIS Pro 交互的
arcpy
模块并不是一个可以从 pypi 安装到环境中的模块。它只是“存在”在 ArcGIS Pro 安装提供的 conda 环境中。我一直在通过激活这个 conda env 来编写和运行脚本。我认为将 arcpy
列为 pyproject.toml
中的依赖项是行不通的,因为它无法安装。
遇到这种情况你会如何处理?最佳实践是什么?
注意:根据 esri 的
this 文档,
arcpy
包 可能 可以通过 conda 安装。至少,我可以克隆 ArcGIS Pro 提供的默认环境并对其进行修改(以安装开发部门)。如前所述,我对 python 项目管理相当陌生(而且相当混乱),但是如果我在 pyproject.toml 中列出了我的 deps,生成了requirements.txt,然后将它们从requirements.txt 安装到 conda dev env 中,可能会那工作吗?
pip 可以在 conda 环境中看到 arcpy
:
PS> pip list
Package Version
--------------------------------- -----------------
anyio 3.5.0
appdirs 1.4.4
arcgis 2.2.0.1
...
遇到这种情况你会如何处理?最佳实践是什么?因此您应该在您的
arcpy
或要求中列出
pyproject.toml
。
它只是“存在”在 ArcGIS Pro 安装提供的 conda 环境中太棒了。因此,如果您列出依赖项,用户就会知道您需要 ArcGIS Pro 才能工作。
我尝试从 ArcGIS Pro 的“后端”调用中抽象出该工具的逻辑,以便我将来可以创建其他后端,例如 QGIS 或 geopandas 和 rasterio。太好了,所以您正在制作
两个包。有一个“后端”在 ArcGIS Pro 之上实现一些接口。然后,该接口将在您所谓的不依赖于 ArcGIS Pro 的“前端”中注册。这两个包有不同的要求。 举一个现实生活中的例子,pyscada 项目有
https://github.com/pyscada/PyScada/blob/main/setup.py#L33然后有带有单独的插件 https://github.com/pyscada /PyScada-BACnet/blob/main/setup.py#L33 依赖项。