我对Python项目组织没有太多经验,但我一直在try 使用pyproject.toml和这个video中的 struct (减go ci位)来遵循现代最佳实践.

这最终是一个适用于ArcGIS Pro的收件箱工具,尽管我试图从对ArcGIS Pro的"后台"调用中抽象该工具的逻辑,以便将来可以创建其他后台,例如Q地理信息系统或收件箱和格栅.

然而,允许用户与ArcGIS Pro接口的arcpy模块并不是一个可以从pypi安装到环境中的模块.它只是"存在"在安装ArcGIS Pro提供的conda环境中.我一直在通过激活此conda dev来编写和运行脚本.我认为将arcpy列为pyproject.toml中的依赖项是行不通的,因为它无法安装.

您如何应对这种情况?最佳实践是什么?

注:根据this doc from esriarcpymight可以通过conda安装.至少,我可以克隆ArcGIS Pro提供的默认环境并对其进行修改(以安装开发人员).如上所述,我对Python项目管理很陌生(而且这相当令人困惑),但如果我在pyproject.toml中列出我的团队,生成一个relevments.text,然后将它们安装到来自relevments.text的conda dev中,这可能起作用吗?

pip可以在conda En中看到arcpy:

PS> pip list

Package                           Version
--------------------------------- -----------------
anyio                             3.5.0
appdirs                           1.4.4
arcgis                            2.2.0.1
...

推荐答案

您如何应对这种情况?最佳实践是什么?

因此,您应该在您的pyproject.toml或要求中列出arcpy个.

它只是"存在"在安装ArcGIS Pro提供的conda环境中

太好了因此,如果您列出依赖项,用户就会知道您需要ArcGIS Pro才能工作.

我试图从对ArcGIS Pro的"后台"调用中抽象工具的逻辑,以便将来可以创建其他后台,例如Q地理信息系统或数据库和网格.

太好了,所以你正在制作two个Package.有一个"后台",它在ArcGIS Pro上实现了一些界面.然后将该界面注册到不依赖于ArcGIS Pro的所谓"前端"中.这two个包裹有单独的要求.

举一个现实生活中的例子,pyscada项目有https://github.com/pyscada/PyScada/blob/main/setup.py#L33个,然后有具有独立https://github.com/pyscada/PyScada-BACnet/blob/main/setup.py#L33个依赖项的插件.

如果我在pyproject.toml中列出我的部门,生成一个relevments.url,然后将它们从relevments.url安装到conda dev环境中,这可能起作用吗?

是的

either列出pyproject.toml中的依赖项(例如https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#a-full-example),或者编写relevments.text,然后您可以从pyproject.toml中动态加载该文件(例如How to reference a requirements.txt in the pyproject.toml of a setuptools project?).

Python相关问答推荐

计算每月过go x年的平均值

Plotly:如何更改Heatmap中彩色条的勾选文本

如何让pyparparsing匹配1天或2天,但1天和2天失败?

在Arrow上迭代的快速方法.Julia中包含3000万行和25列的表

将行从一个DF添加到另一个DF

如何在Python中使用时区夏令时获取任何给定本地时间的纪元值?

如何在Python中使用io.BytesIO写入现有缓冲区?

通过优化空间在Python中的饼图中添加标签

如果条件为真,则Groupby.mean()

使用numpy提取数据块

运行Python脚本时,用作命令行参数的SON文本

无法通过python-jira访问jira工作日志(log)中的 comments

如何将Docker内部运行的mariadb与主机上Docker外部运行的Python脚本连接起来

如何获取numpy数组的特定索引值?

优化器的运行顺序影响PyTorch中的预测

pandas:排序多级列

Django—cte给出:QuerySet对象没有属性with_cte''''

在嵌套span下的span中擦除信息

为什么\b在这个正则表达式中不解释为反斜杠

合并与拼接并举