Я пытаюсь разбить большой (почти монолитный) проект Python на несколько частей, используя Pythons пакетов пространства имен . Поэтому я извлек парсер для *.rules
файлов в пакет пространства имен . Python называет это дистрибутивом .
Я следовал этому руководству и, насколько я могу судить, он частично работает, но ...
Короче: В основном проекте пространства имен отдельно распределенных пакетов пространств имен не видны, поскольку при поиске пакетов сначала выполняется поиск локальных пакетов, а не слияние с системными пакетами из site-packages
.
Структура проекта
Вот часть моего каталога / пакета и структуры модуля.
Основной проект:
pyIPCMI/ # Git repository root
pyIPCMI/
__init__.py
Common/
__init__.py
File1.py
Compiler/
__init__.py
Vendor1.py
Vendor2.py
setup.py
Распространение для парсера правил
pyIPCMI.Parser.Rules/ # Git repository root
pyIPCMI/
Parser/
Rules/
__init__.py
Parser.py
setup.py
Описания пакетов (setuptools)
Основной проект упакован следующим образом:
import setuptools
setuptools.setup(
name="pyIPCMI",
version="1.1.5",
author="Paebbels",
author_email="abc@xyz.de",
description="",
long_description="",
url="https://github.com/Paebbels/pyIPCMI",
packages=setuptools.find_packages(),
classifiers=["License :: OSI Approved :: Apache Software License"],
python_requires='>=3.5',
install_requires=[],
)
Встроенное пространство именупакован так:
import setuptools
namespace = ["pyIPCMI", "Parser", "Rules"]
setuptools.setup(
name=".".join(namespace),
version="1.1.4",
author="Paebbels",
author_email="abc@xyz.de",
description="",
long_description="",
url="https://github.com/Paebbels/pyIPCMI.Parser.Rules",
packages=setuptools.find_namespace_packages(
include=[".".join(namespace), ".".join(namespace) + ".*"]
),
namespace_packages=namespace[0:1],
classifiers=["License :: OSI Approved :: Apache Software License"],
python_requires='>=3.5',
install_requires=[],
)
Все дистрибутивы были:
- упакованы с
setuptools
с использованием Travis-CI - , развернутым в PyPI, изатем
- устанавливается на локальном компьютере с использованием
pip
.
Namespace Структура в PyPI
pyIPCMI
pyIPCMI.Parser.Files
pyIPCMI.Parser.Rules
pyIPCMI.Toolchains
pyIPCMI.Toolchains.Vendor1
pyIPCMI.Toolchains.Vendor2
Описание проблемы
При разработке в основном проекте с использованием, например, PyCharm, локально найденные пространства имен предпочтительнее пакетов из site-packages
. Более того, эти пространства имен не объединяются. Поскольку основной проект имеет то же корневое пространство имен pyIPCMI
, поиск продолжается в локальном проекте разработки, но не выполняется поиск в site-packages
.
Есть идеи, как можно разработать главный проект?
Пожалуйста, сообщите, какая информация необходима для решения этого вопроса. Я пытался записать всю имеющуюся у меня информацию. Но этот вопрос может нуждаться в улучшении, чтобы получить решение.