组织开发和文档文件

组织开发和文档文件

到目前为止,我习惯在目录中的pyenv用户名下安装 python 版本。我使用 Debian 包将项目目录与使用.我用来在项目目录中存储每个项目的自定义 python 环境。pydev/home/pydevdirenvpyenvpip-tools

编辑 - 此链接给出了隔离开发环境的基本原理

https://pwal.ch/posts/2019-11-10-sane-python-environment-2020-part-1-isolation/

编辑 - 上面链接的作者在这里开发了他自己的独立 python 环境工具(我不想为每个项目安装一个 python 版本,所以我使用 Pyenv 和 pip-tools 将 python 版本与 env 库链接):

https://github.com/pwalch/lonesnake

我正在编写用于开发、潜在专利披露的 Python 应用程序,并希望能够在 Linux Debian 服务器上投入生产。文件/srv系统层次结构标准 (FHS) 指定/opt.

https://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/Linux-Filesystem-Hierarchy.html#opt

/opt/pythonapp01/code0000

/srv/pythonapp01/eod-data

我现在正在开发的应用程序使用 csv 格式的日终数据,该数据在开发中不会更新,但会在生产中每晚更新。 python 代码会将 csv 转换为其他 csv 格式以作为文件存储,并将这些修改后的 csv 文件转换为文件格式以提供 Highcharts stockcharts。

我的问题是如何在Linux文件系统层次结构下组织目录?如何存储用于开发的文件、支持可能的专利披露以及将生成的 Python 应用程序在 Linux Debian 服务器上投入生产?开发和文档文件应该位于用户文件夹中吗? eod 数据应该进入/srv/pythonapp01并且代码应该进入吗/opt/pythonapp01/code0000?安装的环境pyenv也应该pip-tools进入/opt生产环境下的应用程序目录吗?我读过,应用程序应该避免在生产中使用系统 python,而且我从未在生产中设置过 python 应用程序,因此这将有助于在开发阶段的早期获得一些指导。

答案1

这是几个问题,我将其抽象为三个:

  1. 如何组织 Python 源代码和开发文档?

  2. 如何打包 Python 应用并将其部署到 Linux?

  3. 我在哪里存储每天生成的数据?

组织开发和文档文件

使用源代码/版本控制系统,可能是现代版本控制工具 git,与 GitLab 或 GitHub 或类似的 git 托管服务一起实现安全、共享的远程存储。

因此,您将拥有一个存储库,一个以您的项目或应用程序命名的特殊目录。

在您的存储库中,文档和源代码的排列将取决于您正在构建的内容。我喜欢将文档.md.rst文件保存在docs目录中。通常有一个README.md描述项目/存储库的 。

Kenneth Reitz 创建了一个 Python 模块的示例结构,如下所示: https://github.com/navdeep-G/samplemod。对于初学者来说,它并不是完全最小化的,因此您可以跳过您不理解的部分,但这是一个很好的起点。 https://docs.python-guide.org/writing/struct/描述了结构。

我不能 100% 确定这pyenv适用于我下面描述的部署方法,因为我使用venv或 ,virtualenv,但部署真正需要的只是requirements.txt列出需要在新的 python 环境中安装的包。您可以通过键入已安装的所有软件包来requirements.txt在工作环境中创建一段时间。pip freeze将其重定向到 arequirements.txt并保存。

如何打包和部署Python应用程序?

对于基于 Linux 和 Unix (Mac) 的系统的“单文件”部署,pex效果很好并且相当简单。 https://pypi.org/project/pex/。有一个简短、清晰的教程:https://medium.com/ovni/pex-python-executables-c0ea39cee7f1

pex,除了您可以从以下位置开始之外,还有很多选择https://packaging.python.org/en/latest/如果你想调查他们。

要明确回答您的问题“pyenv 和 pip-tools 安装环境是否也应该进入生产中 /opt 下的应用程序目录?”,您不需要安装它们,因为 pex 文件是独立的。

我在哪里存储日常数据?

您问“是否应将 eod 数据放入/srv/pythonapp01并放入代码/opt/pythonapp01/code0000?

数据位置看起来不错,但您的应用程序看起来更像/opt/bin/pythonapp01.pex(或您选择的任何二进制/可执行/打包格式)/opt/bin(然后您需要添加/opt/binPATH任何想要运行它的用户)。例如,Mac OS 安装的自制程序包/opt/homebrew/bin. /usr/local/bin是另一个流行的安装位置。

您可以使用多种方案来保存日终数据,例如按年份数字 1 到 365,或按日期(具有分层目录)。我将每日温度读数保存在例如中,/mnt/data/2023/02/06/并每天创建一个新的每日目录,每月创建一个新的每月目录,每年创建一个新的年度目录。

保留备份!

我希望这是有帮助的!

相关内容