'Why does importing kivymd in .kv file give me error. Even though its already installed

I tried making a basic app using kivy. I have installed both kivy and kivymd on my virtual environment. I have also activated the virtual environment for this project. But when I run the program it does not work.

This is the error message

 1:#:kivy 2.0.0
 >>    2:#:kivymd 0.104.2
       3:#:MDFloatingActionButton kivymd.uix.button.MDFloatingActionButton
       4:
 ...
 Unknown directive

This is the output of pip freeze

apt-clone==0.2.1
apturl==0.5.2
beautifulsoup4==4.8.2 
blinker==1.4
Brlapi==0.7.0
ccsm==0.9.14.1
certifi==2019.11.28
chardet==3.0.4
command-not-found==0.3
compizconfig-python==0.9.14.1
configobj==5.0.6
cryptography==2.8
cupshelpers==1.0
dbus-python==1.2.16
defer==1.0.6
distro==1.4.0
docutils==0.18.1
entrypoints==0.3
grpcio==1.16.1
httplib2==0.14.0
idna==2.8
ifaddr==0.1.6
keyring==18.0.1
Kivy==2.0.0
Kivy-Garden==0.1.4
kivymd==0.104.2
launchpadlib==1.10.13
lazr.restfulclient==0.14.2
lazr.uri==1.0.3
louis==3.12.0
lxml==4.5.0
Mako==1.1.0
MarkupSafe==1.1.0
netifaces==0.10.4
nose==1.3.7
oauthlib==3.1.0
onboard==1.4.1
pexpect==4.6.0
Pillow==7.0.0
protobuf==3.6.1
psutil==5.5.1
pycairo==1.16.2
pycrypto==2.6.1
pycups==1.9.73
pycurl==7.43.0.2
Pygments==2.3.1
PyGObject==3.36.0
PyICU==2.4.2
PyJWT==1.7.1
pymacaroons==0.13.0
PyNaCl==1.3.0
pyparted==3.11.2
python-apt==2.0.0
python-debian===0.1.36ubuntu1
python-xapp==2.0.1
python-xlib==0.23
pyxdg==0.26
PyYAML==5.3.1
reportlab==3.5.34
requests==2.22.0
requests-unixsocket==0.2.0
SecretStorage==2.3.1
setproctitle==1.1.10
simplejson==3.16.0
six==1.14.0
soupsieve==1.9.5
systemd-python==234
ubuntu-advantage-tools==20.3
ubuntu-drivers-common==0.0.0
ufw==0.36
Unidecode==1.1.1
urllib3==1.25.8
wadllib==1.3.3
xkit==0.0.0
zeroconf==0.24.4

So, I think all the dependencies are satisfied.

So this is Myapp.py

from kivymd.app import MDApp
from kivy.lang.builder import Builder
from kivy.uix.screenmanager import Screen,ScreenManager

class MenuScreen(Screen):
    pass

class SplitScreen(Screen):
    pass

class FolderScreen(Screen):
    pass

class UploadScreen(Screen):
    pass

sm= ScreenManager()
sm.add_widget(MenuScreen(name = "Menu") )
# In The above statement we put name of MenuScreen 
# to associate this class to MenuScreen in screen_nav.kv
# Whose name is set to Menu
sm.add_widget(SplitScreen(name = "Split") )
sm.add_widget(FolderScreen(name = "Folders_input") )
sm.add_widget(UploadScreen(name = "upload"))

class SplitV(MDApp):
    def build(self):
        scrn= Builder.load_file('screen_nav.kv')
        # scrn= Builder.load_file('screen_nav2.kv')
        # scrn2 = Builder.load_string(sh)
        # scrn= Builder.load_file('screen_nav_new.kv')
        return scrn
        

SplitV().run()

This is screen_nav.kv

#:kivy 2.0.0
#:kivymd 0.104.2
#:MDFloatingActionButton kivymd.uix.button.MDFloatingActionButton

ScreenManager:
    MenuScreen:
    FolderScreen:
    SplitScreen:
    UploadScreen:

<MenuScreen>:
    name: 'Menu'
    BoxLayout:
        orientation:'vertical'
        MDFloatingActionButton:
            text: 'Split'
            pos_hint: {"center_x": 0.5,"center_y": 0.5}
            on_press: root.manager.current = 'Split'
            font_size: 20
            background_color: (1, 1, 0, 1)

        MDFloatingActionButton:
            text: 'Settings'
            pos_hint: {"center_x": 0.5,"center_y": 0.4}
            on_press: root.manager.current = 'Settings'
            font_size: 20
            background_color: (1, 1, 0, 1)

<FolderScreen>:
    name: 'Folders_input'
    Label:
        text: "Folder selection Screen"
        pos_hint: {"center_x": 0.5,"center_y": 0.5}
        

<SplitScreen>:
    name:'Split'
    MDLabel:
        text: 'This is Split screen'
        halign: 'center'
        font_size: 20
    MDRectangleFlatButton:        
        text: 'Back'
        pos_hint: {"center_x": 0.5,"center_y": 0.2}
        font_size: 20
        on_press: root.manager.current = 'Menu'
    
    MDRectangleFlatButton:
        text: 'Upload'
        font_size: 20
        pos_hint: {"center_x": 0.5,"center_y": 0.3}
        on_press: root.manager.current = 'upload'
    

<UploadScreen>
    name:'upload'
    MDLabel:
        text: 'This is upload screen'
        halign: 'center'
        font_size: 20
    MDRectangleFlatButton:
        text: 'Back'
        font_size: 20
        pos_hint: {"center_x": 0.5,"center_y": 0.2}
        on_press: root.manager.current = 'Menu'

The import instructions for the kivy language in the official site is in the same pattern, but it does not work.

What could be the possible solutions.

It would be awesome if you could also suggest me a good kivy extension for vs code.

I am using Mint Mate 20 (Ulyana)



Solution 1:[1]

Thanks everyone, I figured it out. I just removed imports other than kivy in the screen_nav.kv file and it worked.

See this is the screen_nav.kv content

#:kivy 2.0.0

ScreenManager:
    # 1
    MenuScreen:

    SettingsScreen:
    # A1
    FolderScreen:
    # A2'
    WorkHomeScreen:

    StatusScreen:
    CustomScreen:
    DurationScreen:
    DivisionScreen:

    SplitScreen:
    
    UploadScreen:
# 1
<MenuScreen>:
    name: 'Menu'
    # 1
    MDRectangleFlatButton:
        text: 'Split'
        pos_hint: {"center_x": 0.5,"center_y": 0.4}
        on_press: root.manager.current = 'Folders_input'
        # Going to A1
        font_size: 20
        background_color: (1, 1, 0, 1)

    MDRectangleFlatButton:
        text: 'Settings'        
        pos_hint: {"center_x": 0.5,"center_y": 0.3}
        on_press: root.manager.current = 'Settings'
        font_size: 20
        background_color: (1, 1, 0, 1)

<SettingsScreen>:
    name: 'Settings'    
    MDRectangleFlatButton:
        text: 'Back'
        font_size: 20
        pos_hint: {"center_x": 0.5,"center_y": 0.2}
        on_press: root.manager.current = 'Menu'
    MDLabel:
        text:'My new settings screen'
        halign: 'center'
        font_size: 34
        pos_hint: {"center_x": 0.5,"center_y": 0.5}




# A1
<FolderScreen>:
    name: 'Folders_input'
    
    MDLabel:
        text: "Folder selection Screen"
        # pos_hint: {"center_x": 0.5,"center_y": 0.5}
        halign: 'center'
        font_size: 32
    
    MDRectangleFlatButton:        
        text: 'Done'
        pos_hint: {"center_x": 0.5,"center_y": 0.2}
        font_size: 20
        on_press: root.manager.current = 'Work-Home'
        # Going to A2'

# A2'    
<WorkHomeScreen>:
    name: 'Work-Home'
    
    MDRectangleFlatButton:
        text: 'Whatsapp Status/ Instagram stories'
        pos_hint: {"center_x": 0.5,"center_y": 0.9}
        on_press: root.manager.current = 'Folders_input'
        font_size: 20
        background_color: (1, 1, 0, 1)
    
    MDRectangleFlatButton:
        text: 'Custom'
        pos_hint: {"center_x": 0.5,"center_y": 0.8}
        on_press: root.manager.current = 'Custom'
        font_size: 20
        background_color: (1, 1, 0, 1)    
    MDRectangleFlatButton:
        text: 'Duration'
        pos_hint: {"center_x": 0.5,"center_y": 0.7}
        on_press: root.manager.current = 'Duration'
        font_size: 20
        background_color: (1, 1, 0, 1)    
    MDRectangleFlatButton:
        text: 'Division/Parts'
        pos_hint: {"center_x": 0.5,"center_y": 0.6}
        on_press: root.manager.current = 'Division'
        font_size: 20
        background_color: (1, 1, 0, 1)    

    # StatusScreen:
    # CustomScreen:
    # DurationScreen:
    # DivisionScreen:

<StatusScreen>
    name: 'Status'
    MDLabel:
        text: "Status Screen"
        pos_hint: {"center_x": 0.5,"center_y": 0.5}
        font_size: 32
        halign: 'center'
    MDRectangleFlatButton:
        text: 'Back'
        font_size: 20
        pos_hint: {"center_x": 0.5,"center_y": 0.2}
        on_press: root.manager.current = 'Menu'

<CustomScreen>
    name: 'Custom'
    
    MDLabel:
        text: "Custom Screen"
        pos_hint: {"center_x": 0.5,"center_y": 0.5}
        font_size: 32    
        halign: 'center'
    MDRectangleFlatButton:
        text: 'Back'
        font_size: 20
        pos_hint: {"center_x": 0.5,"center_y": 0.2}
        on_press: root.manager.current = 'Menu'

<DurationScreen>
    name: 'Duration'
    MDLabel:
        text: "Duration Screen"
        pos_hint: {"center_x": 0.5,"center_y": 0.5}
        font_size: 32 
        halign: 'center'   
    MDRectangleFlatButton:
        text: 'Back'
        font_size: 20
        pos_hint: {"center_x": 0.5,"center_y": 0.2}
        on_press: root.manager.current = 'Menu'

<DivisionScreen>
    name: 'Division'
    MDLabel:
        text: "Division Screen"
        pos_hint: {"center_x": 0.5,"center_y": 0.5}
        font_size: 32   
        halign: 'center' 
    MDRectangleFlatButton:
        text: 'Back'
        font_size: 20
        pos_hint: {"center_x": 0.5,"center_y": 0.2}
        on_press: root.manager.current = 'Menu'



# D1
<SplitScreen>:
    name:'Split'
    MDLabel:
        text: 'This is Split screen'
        halign: 'center'
        font_size: 20
    MDRectangleFlatButton:        
        text: 'Back'
        pos_hint: {"center_x": 0.5,"center_y": 0.2}
        font_size: 20
        on_press: root.manager.current = 'Menu'
    
    MDRectangleFlatButton:
        text: 'Upload'
        font_size: 20
        pos_hint: {"center_x": 0.5,"center_y": 0.3}
        on_press: root.manager.current = 'upload'
    

<UploadScreen>
    name:'upload'
    MDLabel:
        text: 'This is upload screen'
        halign: 'center'
        font_size: 20
    MDRectangleFlatButton:
        text: 'Back'
        font_size: 20
        pos_hint: {"center_x": 0.5,"center_y": 0.2}
        on_press: root.manager.current = 'Menu'


Well everything seems messy and things break after every 2 to 3 simple edits in UI code so I am thinking of switching to Flutter

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Atul Anand Oraon