在virtualenv上导入python3上的pygame会导致ImportError

时间:2013-05-25 04:39:59

标签: python-3.x pygame importerror

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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