为数据科学项目组织 Python 脚本

时间:2021-05-10 19:17:07

标签: python devops

我有一个包含许多子文件夹的文件夹,每个子文件夹都有 (n) 个 Python 脚本,可以为项目执行各种任务。它可以是数据分析、调用其他脚本、自动化一些东西等等。这些脚本中有些是相互关联的,有些是独立的。但它们都是同一个“项目”的一部分。

我来自 Java 世界,我习惯于将与项目相关的所有内容打包在 .jar 文件中。我可以做一些类似的事情来组织这些疯狂的 Python 脚本,甚至可以为所有这些脚本提供一个共同的入口点吗?

2 个答案:

答案 0 :(得分:1)

是的,您可以打包项目并安装它。我喜欢使用 Poetry 进行依赖管理、virtualenvs 和打包。它可以在虚拟或全局环境中安装您的项目,或者为您的项目构建一个 *.whl,使其pip 可安装在其他地方(在 docker 容器、云资源等中)。它有点像 Python 的 Maven。

至于“狂野脚本”,没有理由让您的 Python 代码变得杂乱无章。仍然鼓励您在干净的代码、模块化的 OO 设计模式、良好的封装、依赖注入等方面的所有习惯; python 不会像 Java 那样强迫你采取这些防护措施,所以它非常“带上你自己的好习惯”。我经常将我的 python 项目组织成模块化的 java-esque 子包,其中定义了我的域模型和其他可重用组件。然后可以将这些导入到我在脚本文件夹中编写的任何脚本中。这也使脚本本身更易于维护和有序。

粗略的示例结构可以是(取决于项目类型)

project-root
   - domain
     - domain_model_a
     - domain_model_b
   - training
     - machine_learning_model
   - storage
     - repository
        - domain_model_a_repository
        - domain_model_b_repository
     - service
        - elastic_search_service
   - script
        - script_that_does_X
        - ml_training_script

最后,如果您希望能够跳入并调用存储库或服务作为脚本调试目的并告知您要编写的集成测试类型。

答案 1 :(得分:0)

对于数据科学项目,您可能需要查看此 cookiecutter

相关问题