python同级包互相调用_不同项目的python库如何在同一个包中?

假设您有一个名为Ninja的大型(python)软件项目.项目的几个部分如服务器和客户端,还有一个通用的基础结构库,它包含公共类和工具.当然我会创建一个像这样的包结构:ninja.core,ninja.server和ninja.client,其中服务器和客户端都以某种方式导入ninja.core.出于开发目的(我们将eclipse与Subversion一起使用),核心,服务器和客户端都在不同的项目中进行维护,从而产生如下文件夹结构:

eclipse_workspace

|

>-Ninja_core

| |

| >-ninja

| |

| >-core

|

>-Ninja_client

| |

| >-ninja

| |

| >-client

.

.

.

有一个java背景我认为这是可能的,但事实证明(读:导入错误)这不起作用.正如在this answer中所指出的,通常不可能同时拥有ninja.core和ninja.client,除非它们是同一个包ninja的子包,它们不是.这导致:

方法A:

>将整个代码放在一个eclipse / svn项目中,只有一个

包ninja与相应的子包.

在生产环境中,我们希望能够安装核心和服务器,但不能安装客户端或核心和客户端,而不能安装服务器.我可能会弄错,但就我理解python包而言,使用方法A是不可能的.保持项目分离但兼容,使用名称为ninja_core,ninja_client和ninja_server的包似乎很有用.事实上解决了导入问题,并且在开发设置中一切都运行顺畅.为了满足能够独立安装服务器和客户端的要求,我提出了以下想法:

方法B:

>创建一个名为ninja的新项目,其中包含ninja包

>让忍者的__init__.py导入其他库(如果已安装),使它们看起来像是在忍者内部.

到目前为止,我还没有这个工作,我认为甚至可能无法实现.我在考虑这样的事情:

# __init__.py of ninja

import ninja_core as core

# or this:

from ninja_core import core

# or this:

import ninja_core.core

我尝试了这些并再次导致导入错误.谷歌搜索结合python包的方法,而不是找到任何与我的问题相关的东西后,我来到这里.

我在想,也许整个事情都是设计错误.如果客户端和服务器可以独立安装,那么它们是否应该在同一个包中?想要能够独立安装客户端和服务器是一个坏主意吗?为什么我可以在java中扩展包,但不能在python中扩展?这背后的想法是什么?

TL;博士

我正在开发Ninja库,用户应该能够导入ninja.client并导入ninja.server.需要可以单独为客户端和服务器安装库.如何实现这一目标?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值