Skocz do zawartości
View in the app

A better way to browse. Learn more.

Max3D.pl

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Napisano

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?

  • Odpowiedzi 11
  • Wyświetleń 2,2k
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Napisano
  • Autor

A co to jest ten "__init__" mam to wstawić gdzieś w kodzie, czy to chodzi o umieszczenie gdzieś jakiegoś pliku?

Napisano

__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 przez n-pigeon

Napisano
  • Autor

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

Napisano

"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

Napisano
  • Autor

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

Napisano

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 przez n-pigeon

Napisano
  • Autor

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 :/

Napisano
  • Autor

dzięki, nie wiem czy zajmę się tym w tym tygodniu, ale jak sprawdzę to dam znać

Napisano
  • Autor

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

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.