Wie installiere ich zwei bearbeitbare Pakete, bei denen eines vom anderen abhängt?Python

Python-Programme
Anonymous
 Wie installiere ich zwei bearbeitbare Pakete, bei denen eines vom anderen abhängt?

Post by Anonymous »

Ich versuche, eine virtuelle Umgebung einzurichten, um Code für zwei Komponenten eines Projekts zu schreiben, die über eigene separate Github-Repositorys verfügen. Das eine hängt vom anderen ab. Ich habe beide geklont und als bearbeitbare Pakete installiert (

Code: Select all

pip install -e
).
Die Pakete werden von pip als installiert erkannt, können aber nicht in ein Skript in der virtuellen Umgebung importiert werden (der Import kann nicht aufgelöst werden).
Was ich getan habe:
  • Installieren Sie zuerst das Abhängigkeitspaket (übergeordnetes Paket) als bearbeitbares Paket aus dem geklonten Repository und fügen Sie seine Abhängigkeiten in meine virtuelle Umgebung ein.
  • Installieren das abhängige (untergeordnete) Paket im bearbeitbaren Modus aus dem geklonten Repository, aber verwenden Sie --no-deps, um das Überschreiben von Abhängigkeiten zu vermeiden. Dieses Paket hat keine andere Abhängigkeit als das erste Paket.
Ich vermute, dass es etwas mit dem folgenden Namespace zu tun hat, der widersprüchliche Definitionen hat:
Die Verzeichnisstruktur ist:

Code: Select all

.
├── luma.core
│   ├── luma
│   │   └── core
│   │       └── (…)
│   └──luma.core.egg-info
├── luma.lcd
│   ├── luma
│   │   └── lcd
│   │       └── (…)
│   └── luma.lcd.egg-info
├── test.py
└── .venv
└── lib
└── python3.11
└── site-packages
├── luma
├── luma_core-2.5.2.dist-info
├── luma_lcd-2.11.0.dist-info
├── distutils-precedence.pth
├── __editable___luma_core_2_5_2_finder.py
├── editable.luma_core-2.5.2.pth
├── editable___luma_lcd_2_11_0_finder.py
└──__editable.luma_lcd-2.11.0.pth
Die Dateien editable___luma\_\*\_finder.py enthalten die Zeichenfolgen:

Code: Select all

MAPPING: dict[str, str] = {'luma': '/home/user/luma/luma.core/luma'}
NAMESPACES: dict[str, list[str]] = {'luma': ['/home/user/luma/luma.core/luma']}

Code: Select all

and:
MAPPING: dict[str, str] = {'luma': '/home/user/luma/luma.lcd/luma'}
NAMESPACES: dict[str, list[str]] = {'luma': ['/home/user/luma/luma.lcd/luma']}
Bei der Installation als reguläre Pakete (keine Option -e) werden sie im selben Site-Paketverzeichnis abgelegt. Dieses Verzeichnis existiert in beiden Repositorys, jedoch als separate Unterverzeichnisse. Können die Pakete deshalb nicht importiert werden?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post