在Qt Creator中运行python pygame报ImportError: No module named ‘pygame‘的一个解决办法

本文介绍如何在QtCreator中成功运行带有pygame的Python项目,解决了在QtCreator中因环境变量问题导致pygame无法导入的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 背景

1.1 软硬件相关信息

  • PC: MacBook Pro
  • Qt Creator:Qt Creator 4.13.1 Based on Qt 5.15.1 (Clang 11.0 (Apple), 64 bit)
  • Python:Python 3.8.2

1.2 问题背景

最近在自学python,用了非常经典的《Python编程从入门到实践》,一开始用的教材里面推荐的Sublime Text来编辑运行代码,但由于本人对Qt Creator编辑器用起来更熟悉更趁手,为此一番折腾,以便在内嵌在Qt Creator中的应用程序输出窗口中直接查看代码运行输出log。
基础知识部分章节使用的是python自带的库,运行起来没有毛病;当学习到教材项目部分的“外星人入侵”章节时,问题来了,按照书籍中的步骤和网上的攻略安装好了pygame及其他相关模块之后,编辑好的alien_invation.py在SHELL终端运行正常,但是在Qt Creator中运行时,应用程序输出了如下的错误信息:

Traceback (most recent call last):
  File "/Users/HostName/py_alien/alien_invasion.py", line 2, in <module>
    import pygame
ImportError: No module named 'pygame'

2. 解决办法

2.1 设置环境变量

打开 .bash_profile:

vim ~/vim .bash_profile

在脚本末尾添加如下行并保存:

export PYTHONPATH="$PYTHONPATH:/Users/HostName/Library/Python/3.8/lib/python/site-package"

使环境变量设置生效:

source ~/.bash_profile

2.2 在Qt Creator中运行目标代码

重启Qt Creator,

  1. 配置要运行的脚本(这里是alien_invasion.py);
  2. 设置解释脚本使用的python版本(可以点击Manage按钮,在新打开的窗口中将某版本的python设置为默认使用版本);
  3. 设置工作目录(不设置 且 pygame load image 的路径不是图像的绝对路径的话,运行脚本可能会找不到文件)。

配置要解释的脚本、使用的python版本和工作目录

  1. 运行脚本,OK了~

一切正常~

此问题的解决参考了这篇文章,该文章解决的是PyCharm集成pygame中遇到的import error问题:Mac Pycharm 提示 – ImportError: No module named

ModuleNotFoundError Traceback (most recent call last) File D:\ProgramData\anaconda3\envs\jqxx\lib\site-packages\gym\envs\box2d\bipedal_walker.py:14 13 try: ---> 14 import Box2D 15 from Box2D.b2 import ( 16 circleShape, 17 contactListener, (...) 21 revoluteJointDef, 22 ) ModuleNotFoundError: No module named 'Box2D' During handling of the above exception, another exception occurred: DependencyNotInstalled Traceback (most recent call last) Cell In[2], line 1 ----> 1 env = gym.make('LunarLander-v2') 2 env.seed(0) 3 print('State shape: ', env.observation_space.shape) File D:\ProgramData\anaconda3\envs\jqxx\lib\site-packages\gym\envs\registration.py:581, in make(id, max_episode_steps, autoreset, apply_api_compatibility, disable_env_checker, **kwargs) 578 env_creator = spec_.entry_point 579 else: 580 # Assume it's a string --> 581 env_creator = load(spec_.entry_point) 583 mode = _kwargs.get("render_mode") 584 apply_human_rendering = False File D:\ProgramData\anaconda3\envs\jqxx\lib\site-packages\gym\envs\registration.py:61, in load(name) 52 """Loads an environment with name and returns an environment creation function 53 54 Args: (...) 58 Calls the environment constructor 59 """ 60 mod_name, attr_name = name.split(":") ---> 61 mod = importlib.import_module(mod_name) 62 fn = getattr(mod, attr_name) 63 return fn File D:\ProgramData\anaconda3\envs\jqxx\lib\importlib\__init__.py:127, in import_module(name, package) 125 break 126 level += 1 --> 127 return _bootstrap._gcd_import(name[level:], package, level) File <frozen importlib._bootstrap>:1030, in _gcd_import(name, package, level) File <frozen importlib._bootstrap>:1007, in _find_and_load(name, import_) File <frozen importlib._bootstrap>:972, in _find_and_load_unlocked(name, import_) File <frozen importlib._bootstrap>:228, in _call_with_frames_removed(f, *args, **kwds) File <frozen importlib._bootstrap>:1030, in _gcd_import(name, package, level) File <frozen importlib._bootstrap>:1007, in _find_and_load(name, import_) File <frozen importlib._bootstrap>:986, in _find_and_load_unlocked(name, import_) File <frozen importlib._bootstrap>:680, in _load_unlocked(spec) File <frozen importlib._bootstrap_external>:850, in exec_module(self, module) File <frozen importlib._bootstrap>:228, in _call_with_frames_removed(f, *args, **kwds) File D:\ProgramData\anaconda3\envs\jqxx\lib\site-packages\gym\envs\box2d\__init__.py:1 ----> 1 from gym.envs.box2d.bipedal_walker import BipedalWalker, BipedalWalkerHardcore 2 from gym.envs.box2d.car_racing import CarRacing 3 from gym.envs.box2d.lunar_lander import LunarLander, LunarLanderContinuous File D:\ProgramData\anaconda3\envs\jqxx\lib\site-packages\gym\envs\box2d\bipedal_walker.py:24 15 from Box2D.b2 import ( 16 circleShape, 17 contactListener, (...) 21 revoluteJointDef, 22 ) 23 except ImportError: ---> 24 raise DependencyNotInstalled("box2D is not installed, run `pip install gym[box2d]`") 27 if TYPE_CHECKING: 28 import pygame DependencyNotInstalled: box2D is not installed, run `pip install gym[box2d]`
最新发布
06-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值