Can I run a Kivy program from within Pyscripter?

2019-08-27 07:42发布

问题:

I've entered this code in Pyscripter:

import kivy

kivy.require('1.7.2')

from kivy.app import App

from kivy.uix.label import Label

class MyApp(App):

      def build(self):
          return Label(text='Hello Kivy')

MyApp().run()

I then press the Run button (the green triangle). I get the following error:

Import error: No module named kivy

What can I do to make this work?

P.S. I know I can leave Pyscripter and use kivy.bat, but I would like to use the debugging capabilities within Pyscripter.

回答1:

I think this is probably because kivy.bat really sets up and uses a second python distribution that has kivy installed. However, pyscripter is using your normal system installation, which does not have the kivy module installed.

You can probably tell pyscripter to use the kivy interpreter with the right environment set up. I don't know how exactly (I haven't ever tried on windows), but for instance this previous question is similar but about pycharm rather than pyscripter. I have pasted the answer below, some of it relates specifically to pycharm but something similar will probably work for pyscripter.

Install and open PyCharm

If you already had it installed and have a project open, click File -> Settings (Ctrl + Alt + S). (If not, create a new project, and

click the '...' next to interpreter, and skip step 2) Under Project Settings, click Project Interpreter -> Python Interpreters Click the little green + and select local (You can also set up an interpreter to your installed python from this list) Point it to ..\Kivy\Python\python.exe and click ok (Mine's path was c:\Program files (x86)\Kivy\Python\python.exe since that is where I unzipped the kivy zip file to)

I have also attached a settings.jar file here https://groups.google.com/forum/#!topic/kivy-users/xTpib2C8r_A. This is the kv language definition. Its not complete, but it helps a lot. Click File->Import-> Select the settings.jar file. Only FileTypes will be ticked. import this and you will have "kv language file" definition under File->Settings-IDE Settings->File Types

Open a kv file to see the differentiation in colours, as well as autocomplete Widgets are type 1 Properties are type 2 all events (on_something) are type 3 type 4 is just self and root.

-- That is all for PyCharm, the rest is Windows 7 specific things. -- 1. open a command prompt and browse to your ..\Kivy\Python\lib folder 2. type mklink /D kivy "..\Kivy\kivy\kivy" (Mines line was mklink /D kivy "c:\Program files (x86)\Kivy\kivy\kivy") This will set up a symlink so that your all your kivy python files are read and their definitions are included, in order to get autocomplete

Now we need to set up the environment variables. You could do this per project inside PyCharm, but might as well do it in windows, so you only need to select the python interpreter each time Click start and type envir Select the second one. (System variables) ( You could also get here with Win+PauseBreak-> Click Advanced system settings) Click Environment variables

Now add these (Once again, just point to wherever you have your kivy folder. You can also find all these in the kivy.bat file, just find and replace the variables with your path)

GST_PLUGIN_PATH c:\Program Files (x86)\Kivy\gstreamer\lib\gstreamer-0.10

GST_REGISTRY c:\Program Files (x86)\Kivy\gstreamer\registry.bin

PATH c:\Program Files (x86)\Kivy;c:\Program Files (x86)\Kivy\Python;c:\Program Files (x86)\Kivy\gstreamer\bin;c:\Program Files (x86)\Kivy\MinGW\bin;c:\Program Files (x86)\Kivy;c:\Program Files (x86)\Kivy\Python;c:\Program Files (x86)\Kivy\gstreamer\bin;c:\Program Files (x86)\Kivy\kivy;%PATH%

Restart your machine. (For the environment variables to load)

Now when you open your kivy project, just select the Kivy interpreter you set up earlier, and bobs your uncle.

You can also try to install kivy in your existing python installation. The kivy website has instructions for this here. I haven't tried this, and there may be some tricky bits.



回答2:

I've had the same trouble and I solved it out using a pyscripter's option in the 'Tools' menu called 'Edit Startup scripts' which's name says it all.

Everything you write there should be executed whenever pyscripter starts a python interpreter so it can be used among other things to do the same as 'kivy.bat' but inside pyscripter, I wrote the following startup script basing on info from here How to develop and run kivy apps on PyDev and it works fine for me.

# This startup script makes it possible to Pyscripter to work with the kivy package

import sys
import os

kivy_path = 'C:/kivy'
relative_modules_paths = ['/kivy',
                          '/Python/',
                          '/Python/Lib/',
                          '/Python/Lib/Site-packages/',]

# tells the interpreter to look for python modules in the kivy modules' paths
for relative_path in relative_modules_paths:
    sys.path.append( kivy_path+relative_path )

# sets some environment variables needed by kivy. Not permanent.
os.environ['GST_PLUGIN_PATH'] = kivy_path+'/gstreamer/lib/gstreamer-0.10'
os.environ['GST_REGISTRY'] = kivy_path+'gstreamer/registry.bin'

kivy_environ_paths = '{kp};{kp}/Python;{kp}/gstreamer/bin;{kp}/MinGW/bin;'
kivy_environ_paths = kivy_environ_paths.format( kp=kivy_path )

os.environ['PATH'] = kivy_environ_paths

# theorecally your environment variables won't be affected outside the
# interpreter. You can still backup your environment variables if you 
# don't feel confident

Just change the kivy_path variable in the script so it fixes with the kivy package's path (folder containing kivy.bat) on your computer and you should be able to run your kivy apps just like when you open them with kiby.bat