我有一个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脚本如何从上层目录导出文件?因为我需要测试我的客户端脚本,进行一些更改并执行。
我找到了一些基于添加PATH
上层文件夹(sys.path.insert(0, parentdir)
的解决方案,但我确定这不是一个好方法)和relative imports。但对于相对导入,我必须将我的脚本包装到一个包中。
好的,我想我会这样做,但这是另一个问题。我想将“客户”与“服务”分开部署,因为我不想与我的用户共享服务代码。我该如何处理这个问题?
我项目的最佳结构是什么?当我将代码打包到包中时,如何开发和调试我的项目?因为测试我想从我的子文件夹启动客户端。
答案 0 :(得分:0)
好问题。我在目录树和部署中的不同级别导入模块时遇到了类似的问题。我最终将项目树重新组织为非常平坦(所有文件都在一个目录中),只是命名文件informativeley,并且为了获得所需的功能而重新编译代码。为了部署,我将主要的pyc文件复制到子项目文件夹中。 我很想知道更好的方法。