RT-Virus Napisano 16 Październik 2012 Napisano 16 Październik 2012 Witam Chciałbym do swojego skryptu zaimportować inny plik .py by odczytać z niego część kodu. Robię to w ten sposób: from .properties_animviz.py import ( MotionPathButtonsPanel, OnionSkinButtonsPanel, ) i otrzymuję komunikat: ValueError: Attempted relatvie import in non-package Jak można rozwiązać ten problem?
n-pigeon Napisano 16 Październik 2012 Napisano 16 Październik 2012 potrzebujesz __init__.py w swoim directory, bez niego python nie traktuje twojego dir'a jako paczki (package) i nie może poprawnie odczytać odnośników. http://stackoverflow.com/questions/5497951/attempted-relative-import-in-non-package
RT-Virus Napisano 16 Październik 2012 Autor Napisano 16 Październik 2012 A co to jest ten "__init__" mam to wstawić gdzieś w kodzie, czy to chodzi o umieszczenie gdzieś jakiegoś pliku?
n-pigeon Napisano 16 Październik 2012 Napisano 16 Październik 2012 (edytowane) __init__.py to trochę jak index.html w HTML. Musi znajdować się w głównym folderze, do którego się odnosisz, możesz w nim umieścić kod swojego głównego .py, ale może to być po prostu pusty plik w tym samym folderze co główny .py. blabla/nazwa/__init__.py blabla/nazwa/modul.py i możesz importować te moduły: import nazwa.modul from nazwa import modul __init__.py może być pusty, ale jak coś w nim umieścisz, możesz się do niego dostać poprzez: import nazwa Edytowane 16 Październik 2012 przez n-pigeon
RT-Virus Napisano 16 Październik 2012 Autor Napisano 16 Październik 2012 Chyba czegoś tu nie rozumiem. Stworzyłem plik __init__.py, zapisałem go w folderze z plikiem "properties_animviz.py". W pliku __init__.py wstawiłem kod: import properties_animviz.modul i otrzymuje error: ImportError: No module named properties_animviz
n-pigeon Napisano 16 Październik 2012 Napisano 16 Październik 2012 "modul" to mój przykład i po prostu nazwa modulu, możesz go nazwać jak chcesz spójrz na przykład, to co jest przed .modul to nie plik, a nazwa folderu. powinno być tak dir/koza/__init__.py dir/koza/properties_animviz.py jeśli coś importujesz z properties_animviz.py, to piszesz: import koza.properties_animviz jeśli wewnątrz __init__.py chcesz coś zaimportować możesz napisać from . import properties_animviz Tutaj masz dokumentacje: http://docs.python.org/py3k/reference/import.html#packages
RT-Virus Napisano 16 Październik 2012 Autor Napisano 16 Październik 2012 to chyba jest zbyt ciężkie dla mnie, czytam te dokumentacje i nic nie rozumiem, zrobiłem tak jak mi piszesz czyli gdy mam foldery: panel/__init__.py panel/properties_animviz.py i wstawiam taki kod: import panel.properties_animviz i mam błąd: Traceback : File "C:\Users\Kompot\Desktop\blender-skrypty\panel-animatora.blend\__init__", line 1, in ImportError: No module named panel.properties_animviz
n-pigeon Napisano 16 Październik 2012 Napisano 16 Październik 2012 (edytowane) Nie, nie, to nie jest trudne, po prostu ja dupnie tłumacze, dokumentacja jest trudna do zrozumienia (dam Ci tutka ma przykłady to łatwiej przeanalizować), a tobie jeszcze nie styknęło o co chodzi. Główny skrypt znajduje się w folderze "pierwszy" nazywa się setup.py ma też pod folder o nazwie "drugi" w którym jest properties_animviz.py Wygląda to tak: pierwszy/ setup.py drugi/ __init__.py properties_animviz.py Odpalasz setup.py a w nim masz kod: import drugi.properties_animviz Tutaj masz tut z python.org: http://docs.python.org/py3k/tutorial/modules.html#packages Obczaj Blenderowy folder scripts/Addons, tam niektóre addony są w ich własnym folderze gdzie też mają __init__.py Najlepiej uczyć się czytając kod. Zrób może uproszczone skrypty na print() by przetestować. Edytowane 16 Październik 2012 przez n-pigeon
RT-Virus Napisano 16 Październik 2012 Autor Napisano 16 Październik 2012 No niby rozumem te strukturę tylko folderów i plików i to jak to jest przedstawione w dokumentacji, nawet zrobiłem dokładnie tak samo jak Ty napisałeś i mam znów ten sam błąd w consoli :/
n-pigeon Napisano 16 Październik 2012 Napisano 16 Październik 2012 Sprawdź to, rozpakuj i odpal setup.py w zwykłej konsoli pythona (python3): http://www.wuala.com/n-pigeon/Scripts/public_scripts/ Napisz czy działa.
RT-Virus Napisano 17 Październik 2012 Autor Napisano 17 Październik 2012 dzięki, nie wiem czy zajmę się tym w tym tygodniu, ale jak sprawdzę to dam znać
RT-Virus Napisano 26 Październik 2012 Autor Napisano 26 Październik 2012 Ok, zainstalowałem konsole pythona, odpaliłem skrypt i pięknie ładnie działa.... No dobra a czemu mi to w blenderze nie działa? :P
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się