从分布式的命名空间包中,我知道我可以利用命名空间包将一个大的Python包分成几个较小的包.真的很棒.该文件还提到:
顺便提一下,请注意,在正常的Python包布局中,项目的源树必须包含命名空间包'__init__.py文件(以及任何父包的__init__.py).这些
__init__.py文件必须包含以下行:Run Code Online (Sandbox Code Playgroud)__import__('pkg_resources').declare_namespace(__name__)此代码确保命名空间包机制正在运行,并且当前包已注册为命名空间包.
我想知道将相同的目录层次结构保存到包的层次结构有什么好处吗?或者,这只是distribute/setuptools的命名空间包功能的技术要求?
当然,
我想提供一个子包foo.bar,这样我就必须构建以下文件夹层次结构并准备__init__.py以使setup.py工作在命名空间包中:
~foo.bar/
~foo.bar/setup.py
~foo.bar/foo/__init__.py <= one-lined file dedicated to namespace packages
~foo.bar/foo/bar/__init__.py
~foo.bar/foo/bar/foobar.py
Run Code Online (Sandbox Code Playgroud)
我不熟悉命名空间包,但它在我看来1)foo/bar和2)(几乎)单行__init__.py是例行任务.它们提供了一些"这是命名空间包"的提示,但我认为我们已经在setup.py中有这些信息了?
编辑:
如下面的块所示,我可以在我的工作目录中使用没有该嵌套目录和单行__init__.py的命名空间包吗?也就是说,我们可以要求setup.py通过只放一行来自动生成它们namespace_packages = ['foo']吗?
~foo.bar/
~foo.bar/setup.py
~foo.bar/src/__init__.py <= for bar package
~foo.bar/src/foobar.py
Run Code Online (Sandbox Code Playgroud) 我需要部署一个web服务作为我正在创建的DotNetNuke 4.x模块的一部分 - 但我不知道如何做到这一点并且知道它将始终保持在同一个地方.如何将asmx文件添加到我的模块项目中,当我创建.DNN文件时,指定webservice最终会在哪里?我想使用"〜/ webservices/webservice.asmx"格式从模块中的ascx文件中引用webservice.
DotNetNuke是否有办法在.DNN文件中指定Web服务最终会在网站上?如果是这样,我仍然可以使用像〜/ myservice.asmx这样的根锚定标签来引用它们吗?
我创建了一个Github仓库,我保留了我项目的所有代码.
myproject
\
- package api
- package database
- package feature
Run Code Online (Sandbox Code Playgroud)
api包负责与itunes api等外部api通信.
数据库包负责与我的数据库通信.
最后,功能包是我正在构建的实际项目.
每个包都有自己的setup.py.
如何在功能setup.py中添加api和数据库的依赖项?
你会如何推荐我在亚马逊中部署这个python代码?使用码头?拼盘?别的什么?
如果我的问题不清楚,请告诉我,我会对其进行改进.