develop/editable-mode und "flaches" Package in "src"

Hallo zusammen, ich habe eine etwas ungewöhnliche Paketstruktur: . ├── setup.cfg ├── src │ └── __init__.py └── some_release_helper.py Sowie in setup.cfg definiert: [options] packages = trytond.modules.country_order package_dir = trytond.modules.country_order=src Was funktioniert: sdist, bdist und bdist_wheel funktionieren wie gewünscht: Das Package __init__.py landet in trytond/modules/country_order/__init__.py. und wenn ich es normal installiere, landen die Datein dort, wo sie hingehören. *Was nicht funktioniert*: Wenn ich das Paket mit "pip install -e ." installiere: * zeigt die "trytond-country-order.egg-link" *nicht* auf das "src" Verzeichnis * wird "trytond_country_order.egg-info" im Projekt-Verzeichnis angelegt Das resultat ist, dass das Module nicht gefunden wird. *Irgendwelche Ideen, woran das liegen könnte?* Falls sich jemand über das etwas *ungewöhnliche Directory-Layout wundert*: Tryton-Module haben dieses Layout, nur ohne "src" Directory. Beispiel: <https://hg.tryton.org/modules/country/file/tip>. Da ich auf oberster Verzeichnis-Ebene ein paar Module habe, die nicht in das bdist sollen, möchte ich den eigentlichen Packet-Inhalt in das Verzeichnis "src" verschieben. -- Regards Hartmut Goebel | Hartmut Goebel | h.goebel@crazy-compilers.com | | www.crazy-compilers.com | compilers which you thought are impossible |

Hallo, bei mir funktioniert es, wenn man statt ``` package_dir = trytond.modules.country_order=src ``` ``` package_dir = =src ``` schreibt, also den Paketnamen nicht explizit nennt. Allerdings verwende ich auch Namespace-Pakete. Mit freundlichen Grüßen, Julian Gethmann On 05/03/2021 09:52, Hartmut Goebel wrote:
Hallo zusammen,
ich habe eine etwas ungewöhnliche Paketstruktur:
. ├── setup.cfg ├── src │ └── __init__.py └── some_release_helper.py
Sowie in setup.cfg definiert:
[options] packages = trytond.modules.country_order package_dir = trytond.modules.country_order=src
Was funktioniert: sdist, bdist und bdist_wheel funktionieren wie gewünscht: Das Package __init__.py landet in trytond/modules/country_order/__init__.py. und wenn ich es normal installiere, landen die Datein dort, wo sie hingehören.
*Was nicht funktioniert*: Wenn ich das Paket mit "pip install -e ." installiere:
* zeigt die "trytond-country-order.egg-link" *nicht* auf das "src" Verzeichnis * wird "trytond_country_order.egg-info" im Projekt-Verzeichnis angelegt
Das resultat ist, dass das Module nicht gefunden wird.
*Irgendwelche Ideen, woran das liegen könnte?*
Falls sich jemand über das etwas *ungewöhnliche Directory-Layout wundert*: Tryton-Module haben dieses Layout, nur ohne "src" Directory. Beispiel: <https://hg.tryton.org/modules/country/file/tip>. Da ich auf oberster Verzeichnis-Ebene ein paar Module habe, die nicht in das bdist sollen, möchte ich den eigentlichen Packet-Inhalt in das Verzeichnis "src" verschieben.

Hi,
bei mir funktioniert es, wenn man statt
Habe nochmal alle Varianten durchgetestet: | packages | package_dir || wheel | install -e | +----------+-------------++-------+------------+ | gesetzt | gesetzt || okay | wrong | +----------+-------------++-------+------------+ | gesetzt | leer || error | error | +----------+-------------++-------+------------+ | gesetzt | "*" || error | error | +----------+-------------++-------+------------+ | leer | gesetzt || wrong | wrong | +----------+-------------++-------+------------+ | leer | leer || wrong | okay | error: package directory 'src/trytond/modules/country_order' does not exist
Allerdings verwende ich auch Namespace-Pakete. Meinst Du damit, dass Dein Package in src//trytond/modules/country_order ist (bzw. wäre)? Ja, damit geht es. Aber ich will halt die unnötigen Verzeichnis-Ebenen nicht haben :-)
-- Regards Hartmut Goebel | Hartmut Goebel | h.goebel@crazy-compilers.com | | www.crazy-compilers.com | compilers which you thought are impossible |

Hi,
| packages | package_dir || wheel | install -e | +----------+-------------++-------+------------+ | gesetzt | gesetzt || okay | wrong | heißt package_dir gesetzt hier
package_dir =
trytond.modules.country_order=src
oder (meine Variante) ``` package_dir = =src ``` ? (Ist ja auch gesetzt, aber auf `=src` statt auf `trytond.modules.country_order=src`)
Allerdings verwende ich auch Namespace-Pakete. Meinst Du damit, dass Dein Package in src//trytond/modules/country_order ist (bzw. wäre)? Ja, damit geht es. Aber ich will halt die unnötigen Verzeichnis-Ebenen nicht haben :-) Ja, bei mir wären die Module dann in src/trytond/modules/country_order und in der setup.cfg stünde zusätzlich `packages = find_namespace:` Aber, ja, das ist von der Struktur her anders.

Am 05.03.21 um 11:11 schrieb Julian Gethmann:
heißt package_dir gesetzt hier
Danke der Nachfrage. packages "set": `packages = trytond.modules.country_order` packages "empty": `packages = ` package_dir "set": `package_dir = \n trytond.modules.country_order=src` package_dir "empty": `package_dir = \n trytond.modules.country_order=src` Das ganze scheint eo Bug in setuptools zu sein: https://github.com/pypa/setuptools/issues/1801 -- Regards Hartmut Goebel | Hartmut Goebel | h.goebel@crazy-compilers.com | | www.crazy-compilers.com | compilers which you thought are impossible |

On 05/03/2021 11:24, Hartmut Goebel wrote:
packages "set": `packages = trytond.modules.country_order` packages "empty": `packages = ` package_dir "set": `package_dir = \n trytond.modules.country_order=src` package_dir "empty": `package_dir = \n trytond.modules.country_order=src`
Das ganze scheint eo Bug in setuptools zu sein: https://github.com/pypa/setuptools/issues/1801 Danke für die Erläuterung.In der Liste fehlt aber dann ja RonnyPfannschmidts/meine Variante/workaround. Ich konnte damit auch mit `packages = country_order` und src/mein_test_name das Paket installierbar machen mit `pip -e .`, sodass das trytond.modules.country_order.egg-info in src liegt. Also soweit ohne den Namespace-Subordner.

Am 05.03.21 um 12:37 schrieb Julian Gethmann:
Ich konnte damit auch mit `packages = country_order` und src/mein_test_name das Paket installierbar machen mit `pip -e .`, sodass das trytond.modules.country_order.egg-info in src liegt. Also soweit ohne den Namespace-Subordner.
Kannst Du bitte nochmal genau schrieben, was Du da gemacht hast? "packages = country_order", "src/mein_test_name" und "trytond.modules.country_order.egg-info" passen m.E. nicht zusammen. Außerdem sogt ""packages = country_order" dafür, dass das Paket eben *nicht* trytond.modules.country_order (also qaulifiziert) heißt, sonder nur "country_order". -- Regards Hartmut Goebel | Hartmut Goebel | h.goebel@crazy-compilers.com | | www.crazy-compilers.com | compilers which you thought are impossible |

Außerdem sogt ""packages = country_order" dafür, dass das Paket eben *nicht* trytond.modules.country_order (also qaulifiziert) heißt, sonder nur "country_order". Ja, das stimmt. Entschuldigung, das habe ich vorhin nicht getestet, sondern nur auf die Struktur geachtet, sodass sich in dem von mir beschriebenen Fall nur folgendes Verhalten zeigt, das aber ja nicht das gewünschte ist:
Kannst Du bitte nochmal genau schrieben, was Du da gemacht hast?Auszug aus der setup.cfg: [metadata] name = trytond.modules.country_order [options] # Hier hast du recht s.u.
python -m pip install -e . -> ok python -c "import country_order" -> ok python -c "import trytond.modules.country_order" -> ImportError (und wenn ich `packages: trytond.modules.country_order` setzte, scheitert pip install -e .) packages = country_order package_dir = =src [options.packages.find] where = src Meine Verzeichnisstruktur: ├── setup.cfg ├── setup.py ├── src │ ├── country_order │ │ └── __init__.py │ └── trytond.modules.country_order.egg-info <-- wird erst durch pip erzeugt
"packages = country_order", "src/mein_test_name" und "trytond.modules.country_order.egg-info" passen m.E. nicht zusammen.mein_test_name sollte hier auch country_order sein, wobei ich es erst überall mit meinem namen hatte, sorry.
Entschuldigt bitte die Verwirrung. Julian

Am 05.03.21 um 16:11 schrieb Julian Gethmann:
Entschuldigung, das habe ich vorhin nicht getestet
Passt schon. Ich hätte mich ja gefreut, wenn Du recht gehabt hättest :-) -- Regards Hartmut Goebel | Hartmut Goebel | h.goebel@crazy-compilers.com | | www.crazy-compilers.com | compilers which you thought are impossible |
participants (2)
-
Hartmut Goebel
-
Julian Gethmann