Reputation: 173
I'm testing the learn to fly tutorial for pysdl2. (I'm also new to python) http://pysdl2.readthedocs.io/en/rel_0_9_4/tutorial/index.html
I'm getting an error, thinking it's just some path problem.
Error:
guillaume@ubuntu:~/script$ python sdlTest.py
Traceback (most recent call last):
File "sdlTest.py", line 4, in <module>
RESOURCES = sdl2.ext.Resources(__file__, "resources")
File "/usr/lib/python2.7/dist-packages/sdl2/ext/resources.py", line 139, in __init__
self.scan(path, subdir, excludepattern)
File "/usr/lib/python2.7/dist-packages/sdl2/ext/resources.py", line 313, in scan
raise ValueError("invalid path '%s'" % path)
ValueError: invalid path 'sdlTest.py'
Current code:
import sys
import sdl2.ext
RESOURCES = sdl2.ext.Resources(__file__, "resources")
I'm on ubuntu 16.04 installed python version
guillaume@ubuntu:~/script$ python -V
Python 2.7.12
python-sdl2 version:
guillaume@ubuntu:~/script$ dpkg -s python-sdl2
Package: python-sdl2
Status: install ok installed
Priority: optional
Section: python
Installed-Size: 392
Maintainer: Ubuntu Developers <[email protected]>
Architecture: all
Source: pysdl2
Version: 0.9.3+dfsg2-1
Depends: python:any (<< 2.8), python:any (>= 2.7.5-5~), libsdl2-2.0-0, libsdl2-gfx-1.0-0, libsdl2-image-2.0-0, libsdl2-mixer-2.0-0, libsdl2-ttf-2.0-0
Recommends: python-numpy
Suggests: pysdl2-doc
Description: Python bindings to the SDL2 C-library (Python 2 build)
PySDL2 is a ctypes based wrapper around the Simple DirectMedia Layer 2 library
to allow portable low level access to a video framebuffer, audio output, mouse
and keyboard.
.
This module is built for Python version 2.x.
Original-Maintainer: Debian Python Modules Team <[email protected]>
Homepage: https://bitbucket.org/marcusva/py-sdl2
PYTHONPATH:
guillaume@ubuntu:~/script$ echo $PYTHONPATH
/usr/lib/python2.7/dist-packages/sdl2:
guillaume@ubuntu:~/script$ ls /usr/lib/python2.7/dist-packages/sdl2/
audio.py filesystem.py keycode.pyc render.py stdinc.pyc
audio.pyc filesystem.pyc loadso.py render.pyc surface.py
blendmode.py gamecontroller.py loadso.pyc rwops.py surface.pyc
blendmode.pyc gamecontroller.pyc log.py rwops.pyc syswm.py
clipboard.py gesture.py log.pyc scancode.py syswm.pyc
clipboard.pyc gesture.pyc messagebox.py scancode.pyc timer.py
cpuinfo.py haptic.py messagebox.pyc sdlgfx.py timer.pyc
cpuinfo.pyc haptic.pyc mouse.py sdlgfx.pyc touch.py
dll.py hints.py mouse.pyc sdlimage.py touch.pyc
dll.pyc hints.pyc pixels.py sdlimage.pyc version.py
endian.py __init__.py pixels.pyc sdlmixer.py version.pyc
endian.pyc __init__.pyc platform.py sdlmixer.pyc video.py
error.py joystick.py platform.pyc sdlttf.py video.pyc
error.pyc joystick.pyc power.py sdlttf.pyc
events.py keyboard.py power.pyc shape.py
events.pyc keyboard.pyc rect.py shape.pyc
ext keycode.py rect.pyc stdinc.py
guillaume@ubuntu:~/script$
Upvotes: 0
Views: 743
Reputation: 8295
"resource" refers to the name of a sub-directory from where you are running your sdl2-python script.
In the sdl2 example on importing, they need a directory called "resource" to load images that will be displayed them in the sdl2 window in their subsequent examples..
We need some resources from the resources folder, so that we have a test image around to display on the window later on. In your own applications, it is unlikely that you will ever need to import them, but we need them here, so we use the sdl2.ext.Resources class to have them available.
If you want to continue to use the line:
RESOURCES = sdl2.ext.Resources(__file__, "resources")
then from the directory where you are running your script with this line, create a child-directory called "resources" and run your script. You will see the error message will not appear. You can use names other than "resources", just make sure a child directory with the same name exist.
More importantly, to use sdl2, you just need the following 2 lines to load the sdl2 modules and you are good to go..
import sdl2
import sdl2.ext
Upvotes: 1
Reputation: 449
You have likely failed to include a resources folder in your project dir.
The error is somewhat ambiguous but this fixed it for me.
Upvotes: 0