4

我通过以下方式安装了 pySDL2 0.4.1:

下载源码包,输入python setup.py install. 然后我尝试运行复制粘贴到 PyDev eclipse 中的“The Pong Game: Getting Started”教程代码示例:

导入操作系统、系统

try:
    os.environ["PYSDL2_DLL_PATH"] = "/home/me/workspace/Pong/third-party"
    print(os.getenv("PYSDL2_DLL_PATH"))
    from sdl2 import events, SDL_QUIT
    import sdl2.ext as sdl2ext
except ImportError:
    import traceback
    traceback.print_exc()
    sys.exit(1)

def run():
    sdl2ext.init()
    window = sdl2ext.Window("The Pong Game", size=(800, 600))
    window.show()
    running = True
    while running:
        events = sdl2ext.get_events()
        for event in events:
            if event.type == SDL_QUIT:
                running = False
                break
        window.refresh()
    return 0

if __name__ == "__main__":
    sys.exit(run())

我收到以下错误:

Traceback (most recent call last):
  File "/home/me/workspace/Pong/Main.py", line 11, in <module>
    from sdl2 import *
  File "/usr/local/lib/python3.3/dist-packages/sdl2/__init__.py", line 2, in <module>
    from .dll import get_dll_file, _bind
  File "/usr/local/lib/python3.3/dist-packages/sdl2/dll.py", line 90, in <module>
    dll = _DLL("SDL2", ["SDL2", "SDL2-2.0"], os.getenv("PYSDL2_DLL_PATH"))
  File "/usr/local/lib/python3.3/dist-packages/sdl2/dll.py", line 51, in __init__
    raise RuntimeError("could not find any library for %s" % libinfo)
RuntimeError: could not find any library for SDL2

我通过 Synaptic 安装了 Pypy 和 libSDL,并且在 PyDev - PythonPath 中没有添加任何外部库。

我究竟做错了什么?

4

2 回答 2

1

看来您 PySDL2 没有找到SDL2运行时库。它们可在 libsdl下载页面上找到(Linux 除外)。

然后,您应该通过如下设置让 PySDL2 位于库所在的位置PYSDL2_DLL_PATH

# Win32 platforms
set PYSDL2_DLL_PATH=C:\path\to\fancy_project\third_party

# Unix/Posix-alike environments - bourne shells
export PYSDL2_DLL_PATH=/path/to/fancy_project/third_party

# Unix/Posix-alike environments - C shells
setenv PYSDL2_DLL_PATH /path/to/fancy_project/third_party

或在 python 脚本中:

# Win32 Platform path
os.environ["PYSDL2_DLL_PATH"] = "C:\\path\\to\\fancy_project\\third_party"
# Unix/Posix-alike environments path
os.environ["PYSDL2_DLL_PATH"] = "/path/to/fancy_project/third_party"

这样,PySDL2 将始终找到库文件(当然只要路径正确)!在我看来,这似乎是更简单的方法。

使用 SDL2 编码快乐!

于 2013-08-24T14:13:09.730 回答
0

几乎解决了。Ubuntu 有 SDL1.2,SDL 的主下载页面也指向 SDL1.2。需要通过键入以下内容来安装源包:

mkdir /opt/sdl2
cd /opt/sdl2
hg clone http://hg.libsdl.org/SDL SDL
cd SDL
mkdir build && cd build
../configure
make
sudo make install 

然后从http://www.libsdl.org/tmp/SDL_image/下载 SDL_image-2.xxtar.gz

并输入:

../configure
make
sudo make install 

最后输入:

ldconfig /usr/local/lib

现在唯一不起作用的是 SDL_QUIT 没有被识别。

于 2013-08-11T05:08:37.933 回答