1

我在 ubuntu lucid 上有 python3.3.1,我通过 virtualenvwrapper 调用它。我想学习 pygame,所以我使用 pip 安装它。在此之前我安装了 sdl 和 smpeg 开发库

me@ubuntu: sudo apt-get install libsdl1.2-dev
...
me@ubuntu: sudo apt-get install  libsmpeg-dev
...

me@ubuntu: workon envpy331
(envpy331)me@ubuntu:~$ pip install pygame

    Downloading pygame-1.9.1release.tar.gz (2.1MB): 2.1MB downloaded
    Running setup.py egg_info for package pygame    
    WARNING, No "Setup" File Exists, Running "config.py"
    Using UNIX configuration...

    Hunting dependencies...
    SDL     : found 1.2.14
    FONT    : not found
    IMAGE   : not found
    MIXER   : not found
    SMPEG   : found 0.4.5
    PNG     : found
    JPEG    : found
    SCRAP   : found
    PORTMIDI: not found
    PORTTIME: not found
 ....
   Continuing With "setup.py"  

   Successfully installed pygame
   Cleaning up...

然后我尝试导入pygame,这导致了导入错误

(envpy331)me@ubuntu:~$ python
Python 3.3.1 (default, Apr 19 2013, 11:41:37) 
[GCC 4.4.3] on linux

>>> import pygame
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/me/.virtualenvs/envpy331/lib/python3.3/site-packages/pygame/__init__.py", line 95, in <module>
    from pygame.base import *
ImportError: /home/me/.virtualenvs/envpy331/lib/python3.3/site-packages/pygame/base.cpython-33m.so: undefined symbol: PyCObject_FromVoidPtr

知道如何纠正这个问题吗?

4

2 回答 2

0

Pygame 还没有完全移植到 Python 3,只有一些模块。如果你使用 Python 2.7,一切都应该正常。我最近遇到了同样的问题。有些人建议在 Python 3 中使用 Pygame 的各个模块,但这可能很难设置。

于 2013-05-28T17:38:12.187 回答
0

我知道这是一个老问题,但由于我花了一些时间解决这个问题,这是在它自己的虚拟环境中安装pygame的最简单方法:python3.4

sudo apt-get build-dep python-pygame
sudo apt-get install python3-dev libswscale-dev libavformat-dev virtualenvwrapper
echo "export WORKON_HOME=~/.venvs" >> ~/.bashrc
echo ". /usr/share/virtualenvwrapper/virtualenvwrapper.sh" >> ~/.bashrc
. ~/.bashrc

以上你做一次。您对每个新环境重复以下操作:

mkvirtualenv -a ~/your/project/path -p /usr/bin/python3.4 your_project_name
pip install hg+http://bitbucket.org/pygame/pygame

这应该下载并编译正确的pygame版本(带有一堆警告,但仍在工作)。在 Ubuntu GNOME 14.04 和 14.10 上测试。

每次您开始处理给定项目或希望在项目之间切换时:

workon your_project_name

项目名称将出现在提示中。当您想完成并返回系统范围的环境时:

deactivate
于 2014-12-24T00:42:34.767 回答