python - 打包常见的 python 命名空间

标签 python namespaces packaging pypi

我希望在接下来的几天内将我必须的库打包并上传到 PyPI,但我对我对命名空间的方法有点不确定。

我有几个其他方面不相关的项目采用了类似的方法,并希望为它们提供相同的命名空间。例如:

  • 库 1 命名空间:abc.seo
  • 库 2 命名空间:abc.ajax
  • 库 3 命名空间:abc.ecommerce
  • 等等

问题是我不确定两个单独的包(例如 eggs)是否有可能与同一个父命名空间共存。这种方法有问题吗,还是有解决办法?什么是最好的方法?

库不应该打包在一起,它们太不相关了。我想在上传之前把它弄好,以避免在制作“官方”版本后痛苦的 namespace 更改。

(注意 abc 不是真实姓名,我希望我的问题没有广告)

更新

为了对没有安装 setuptools 的人友好,我采用了以下方法:

try:
    __import__('pkg_resources').declare_namespace(__name__)
except ImportError:
    __path__ = __import__('pkgutil').extend_path(__path__, __name__)

setup.py 中的以下内容:

setup(
    ...
    namespace_packages = ['rollyourown'],
    ...

最佳答案

在每个项目基目录中,创建以下结构:

/setup.py
/abc/__init__.py
/abc/seo/

/abc/__init__.py 包含:

__import__('pkg_resources').declare_namespace(__name__)

setup.py 包含:

setup(...,
    packages: ['abc', 'abc.seo'],
    namespace_packages = ['abc']
    ...
)

引用文档:namespace packages .

关于python - 打包常见的 python 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5064951/

相关文章:

packaging - Ada:包装概念

windows-services - 如何将 Electron 应用程序和 Windows 服务捆绑在一起?

python - Yaml 字符串中的反斜杠

clojure - 在 ClojureScript 中不能要求 goog.fx.Dragger

python - 在 python 正则表达式中匹配 unicode 表情符号

xml - 将 XSD 文件链接到 XML

Java XPath : Queries with default namespace xmlns

java - Eclipse:将一个包添加到一堆类中

python - 将 C++ double 返回给 Python?

python - 当变量值更改时,文本对象不会在屏幕上更新