这是一个有点笨拙措辞的问题,但基本上是:
我有一个用于构建python包的包装器脚本,它主要只是setup.py --single-version-externally-managed
。我可以在构建过程中添加任何我想要的东西 - 但它必须是通用的,因为它用于构建大量的包。
通常,我可以将构建结果添加到$ PYTHONPATH,一切都很好。
但是对于命名空间包(例如ndg-httpsclient
),它看起来很像它们只能在指定的site-packages
目录中工作,因为它们使用.pth
个文件。
令人困惑的是 源中的ndg/__init__.py
,其中包含命名空间包样板代码:
__import__('pkg_resources').declare_namespace(__name__)
所以看起来它应该可以直接导入$PYTHONPATH
,但随后安装嘲讽我:
Skipping installation of /<some-build-dir>/site-packages/ndg/__init__.py (namespace package)
据推测它有充分的理由这样做,但它依赖于.pth文件意味着结果不能通过$PYTHONPATH
使用,只能将其复制到一个众所周知的位置,我无法出于技术原因。我也无法在应用程序初始化中注入任意python(所以site.addsitedir()
也出来了。)
那么,是否有一些我不知道如何将名称空间模块导入而不将其置于一个众所周知的位置?或者,有没有办法说服setuptools不要跳过__init__.py
- 这实际上有用吗?