组织python项目结构和分布的正确方法

组织python项目结构和分布的正确方法,python,repository,structure,packages,Python,Repository,Structure,Packages,我有一个Python客户机服务项目。逻辑依赖项如下所示: 换句话说,我有一些服务srv1,srv2,…,srvX,在service.py中有公共代码,这些服务的一些客户端srv1_cl.py,srv2_cl.py,…,srvX_cl.py,在client.py中有公共代码,在common.py中有服务和客户端的公共代码 现在,我在构建用于开发的git存储库以及向用户部署项目方面遇到了问题 首先,我尝试将我的客户和服务存储在不同的文件夹中。此外,我为每个服务创建了一个文件夹,因为每个服务可以包含

我有一个Python客户机服务项目。逻辑依赖项如下所示:

换句话说,我有一些服务srv1,srv2,…,srvX,在service.py中有公共代码,这些服务的一些客户端srv1_cl.py,srv2_cl.py,…,srvX_cl.py,在client.py中有公共代码,在common.py中有服务和客户端的公共代码

现在,我在构建用于开发的git存储库以及向用户部署项目方面遇到了问题

首先,我尝试将我的客户和服务存储在不同的文件夹中。此外,我为每个服务创建了一个文件夹,因为每个服务可以包含很多文件

/myrepo.git
    common.py
    /clients
        client.py
        srv1_cl.py
        srv2_cl.py
    /services
        service.py
        /srv1
            conf.py
            srv1.py
            start.bat
        /srv2
            conf.py
            srv2.py
当我像那样存储文件时,我遇到了一个问题——Python脚本如何从上层目录导出文件?因为我需要测试我的客户端脚本,进行一些更改并执行

我发现了一些解决方案,它是基于添加带有上层文件夹sys.PATH.insert0和parentdir的PATH,但我确信这不是一个好方法,而且是一个好方法。但对于相对导入,我必须将脚本打包到一个包中

好吧,假设我会这么做,但还有一个问题。我想将客户机与服务分开部署,因为我不想与用户共享服务的代码。我如何处理这个问题


我的项目的最佳结构是什么?当我将代码包装到包中时,如何开发和调试我的项目?因为为了测试,我想从我的子文件夹启动客户机。

好问题。在目录树中导入不同级别的模块和部署时,我遇到了类似的问题。最后,我将项目树重新组织为一个目录中的所有文件,并将文件命名为informativeley,并对代码进行大量修改,以获得所需的功能。对于部署,我将主pyc文件复制到子项目文件夹中。 不过我很想知道一个更好的方法