首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将助手函数/代码/访谈直接写入数据目录(即绕过操场)?

将助手函数/代码/访谈直接写入数据目录(即绕过操场)?
EN

Stack Overflow用户
提问于 2021-03-18 06:08:39
回答 1查看 72关注 0票数 0

在对这个问题的回答中,有人建议高级用户可能喜欢直接开发软件包,而不是在操场上开发,然后创建单独的包--具体来说,就是创建跨包助手函数,而不必打包/重新打包等等。

这里有几个问题。其中有些是“现成的”,所以我很高兴自己做实验/研究,但我只是想问一下,以防有任何已知的问题/想法/最佳实践出现在我的脑海中。

  1. 对于这个建议,这是正确的目录吗:/usr/share/docassemble/local3.8/lib/python3.8/site-packages/docassemble/[[package-name]]/data
  2. 这个目录有什么魔力吗?或者我可以使用.../site-packages/docassemble/helpers来开发助手函数/交叉使用访谈材料,然后根据需要导入到.../data中吗?
  3. 文档中的某个位置(即当您运行容器时)是否有docassemble结构的列表?在文档中有对(例如) /usr/share/docassemble/config/.../docassemble/backup等的各种引用,但是我还没有为整个文件系统或docassemble的文件系统找到任何东西(例如,显然没有必要部署alpine )。
  4. 查看文档的“文档组装包的解剖”页面“模块文件夹”页面,我认为用于导入到.yml文件的CWD是.../data
  5. 如果这是正确的,那么如果我要创建一个/usr/share/docassemble/local3.8/lib/python3.8/site-packages/docassemble/helpers/helper.py目录和文件,那么我可以使用如下所示的方法将helper.py导入到虚构的interview.yml文件中?并不是说这是最好的主意,但只是问一下它是否有效,试着更好地理解docassemble.对于这样的工作流程,还没有进行充分的思考(例如,如果使用操场来打包东西更好,或者还有其他更简单的选择)。
代码语言:javascript
复制
---
modules:
    - .....helpers.helper
---
  1. 那么,我大概也可以接受文档中其他地方的建议,并通过将代码放在docassemble/packagename/data/文件夹中并按如下方式导入,从而将包中的代码抽象出来:
代码语言:javascript
复制
---
modules:
    - .module
---

我想我甚至可以像这个.../data/modules/module.py那样构造我的文件,然后用下面这样的东西导入?

代码语言:javascript
复制
---
modules:
    - .modules.module
---

我很乐意做我自己的实验/研究,但我只是想问一下,万一有任何已知的问题/想法出现在我的脑海中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-18 11:34:34

  1. Dockerfile运行python3.8 -m venv --copies /usr/share/docassemble/local3.8。当需要升级到Python3.9时,它将执行python3.9 -m venv --copies /usr/share/docassemble/local3.9。如何在这个虚拟环境中安装软件包取决于Pythonandpip的开发人员。
  2. site-packages/docassemble/helpers目录将是docassemble.helpers包的目录。您可以编写这样的包并将其发布到PyPI上(名称尚未确定)。
  3. 您可以查看安装页和/或Dockerfile
  4. 当您引用packages中的数据文件时,您可以使用一个完全限定的引用,比如docassemble.familylaw:data/questions/kids.yml。如果您编写data/static/tweaks.css,它将假定您是指当前包中的一个文件。如果您只是给它一个文件名(例如,tweaks.css),它将假设您指的是当前包中的一个文件,并且它将根据上下文对您所引用的数据文件夹进行假设。如果您的package称为docassemble.familylaw,那么数据文件夹位于docassemble.familylaw包内的docassemble/familylaw/data
  5. 您可以制作一个名为docassemble.helpers的package并安装它,但是通过直接将文件写入来绕过docassemble的包安装系统是不可取的。请注意,docassemble是一个云应用程序,所以docassemble "server“可能是一组机器。包管理系统确保您可以执行docker stopdocker rmdocker pulldocker run,并且您的服务器将与所有正确的Python包一起重新启动和运行,即使docker pull导致从Python3.8升级到Python3.9。
  6. modules块与data文件夹无关。如果docassemble.xyz列在modules块中,docassemble运行from docassemble.xyz import *并将模块导出的名称导入到interview命名空间中。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66685617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档