我想建立一个python命名空间软件包,其中包含多个连接的软件包,除非明确指定了依赖关系,否则它们需要独立安装。但是,现有的解决方案对我来说似乎更不那么混乱。
例如,其中一个软件包包含大多数问题逻辑,而其他软件包则包含辅助功能,例如绘图和数据导出。逻辑包需要保持苗条状态,并且不能导入超过numpy
的位置,因为其他包可以利用pandas
和matplolib
等更复杂的包。 我想建立一个看起来像]的包结构>命名空间包的结果命名空间,但是没有不必要的文件夹嵌套,例如this:
namespace ├── logic │ ├── __init__.py | ├── functions.py │ └── setup.py # requires numpy ├── datastructure │ ├── __init__.py | ├── functions.py │ └── setup.py # requires namespace.logic and pandas ├── plotting │ ├── __init__.py | ├── functions.py │ └── setup.py # requires namespace.logic, namespace.datastructure and matplotlib └── setup.py #should install every package in namespace
我认为这看起来像是带有模块的常规软件包,但是在mainintainign仅安装特定模块的选项时,我还没有找到将其设置为packgae的方法,因此,我假设名称空间软件包应该提供该选项,但是我可以不太适合
pip
此刻,我将需要再拥有两个这样的目录级别:
namespace ├── NamespaceLogic #don't want this │ ├── namespace #don't want this │ │ └── logic │ │ └── __init__.py │ └── setup.py ├── NamespaceDatastructure #don't want this │ ├── namespace #don't want this │ │ └── datastructure │ │ └── __init__.py │ └── setup.py ├── NamespacePlotting #don't want this │ ├── namespace #don't want this │ │ └── plotting │ │ └── __init__.py │ └── setup.py └── setup.py
我的问题类似于此问题:Python pip install sub-package from own package,但我想避免拥有太多子文件夹,因为这会带来最大限度地限制系统路径长度的风险(+会使其他所有人感到困惑)。我需要如何配置不同的setup.py文件才能运行
pip install namespace #installs namespace.logic, namespace.datastructure, namespace.plotting
pip install namespce.logic #installs only namspace.logic and works in an environment with numpy which does not have pandas or matplotlib
我想建立一个python命名空间软件包,其中包含多个连接的软件包,除非明确指定了依赖关系,否则它们需要独立安装。但是,现有的解决方案...
您可以使用setuptools的package_dir
选项来摆脱一个层次。