Jestem zupełnie nowy w zarządzaniu pakietami Pythona i na pewno zrobiłem coś złego. I był zachęcany do tworzenia struktury katalogów w następujący sposób:Jak budować pakiety Pythona bez powtarzania nazwy najwyższego poziomu do importowania?
bagoftricks
├── bagoftricks
│ ├── bagoftricks
│ │ ├── __init__.py
│ │ └── bagoftricks.py
│ └── __init__.py
├── README.md
└── setup.py
bagoftricks.py zawiera dwie funkcje, levenshtein()
i geofind()
.
chciałbym nazwać je jako:
import bagoftricks
x = bagoftricks.levenshtein(arg1,arg2)
Zamiast uważam, muszę to zrobić:
import bagoftricks
x = bagoftricks.bagoftricks.levenshtein(arg1,arg2)
Czy istnieje lepszy sposób zorganizować pakietów w pierwszej kolejności, bez nadpisywania nazw?
UPDATE
Więc po instrukcje Avichal Badaya jest poniżej, a usunięty jeden poziom zagnieżdżenia. Oznacza to, że teraz mam ...
bagoftricks
├── bagoftricks
│ ├── __init__.py
│ └── bagoftricks.py
├── README.md
└── setup.py
jednak nazwać tego pakietu, nadal mam ...
from bagoftricks.bagoftricks import geofind()
lub
import bagoftricks
następnie
>>> bagoftricks.bagoftricks.geofind()
Zamiast pożądanego ....
from bagoftricks import geofind()
lub
import bagoftricks
>>> bagoftricks.geofind()
nie mogę usunąć tę dodatkową warstwę gniazdowania. Kiedy próbuję, przez analogię, aby usunąć jeden poziom zagnieżdżenia, tak że mój moduł jest płaska, jak:
bagoftricks
├── __init__.py
├── bagoftricks.py
├── README.md
└── setup.py
nie mogę zbudować pakiet w ogóle ...
$ python setup.py build
running build
running build_py
error: package directory 'bagoftricks' does not exist
Jaka jest tajne dla importu naturalnego, takiego jak użycie standardowych pakietów, bez nadmiarowego importu nazw najwyższego poziomu?
Dzięki, to jest jasne i pomocne, szczególnie podpowiedź, jak hodować je skutecznie i prawidłowo. Problemem było zdecydowanie moje zdanie __init__.py. Nie bardzo rozumiałem, gdzie znajduje się w hierarchii i gdzie umieścić to, aby skrócić połączenie. Działa świetnie. Dzięki! – Mittenchops