WHCSRL 技术网

2021-10-18 Python 使用curses库贪吃蛇小游戏走过的坑

介绍

在Github上发现了这个贪吃蛇小项目想当做练手贪吃蛇项目,没想到光是让它跑起来就踩了无数的坑,如果你也遇到这些问题,希望对你有所帮助。

引入自定义模块并同级调用

在从Github上下载了该项目后,要把它作为一项自定义模块引入,我选择的方法是在venvLibsite-packages下新建一个mymodule.pth路径文件存入所有自定义模块,路径文件内写入自定义模块所在文件夹的绝对路径。具体参考文章:引入自定义模块的三种方法

该模块的内部文件
–init–文件指明它为一个可引用的模块,是必需要的。接下来其余几个.py文件中有相互的同级调用,如game.py中会调用game_config,这里需要使用from snake(包名) import game_config而不能直接import game_config,否则会报错‘No module named 'game_config’,其余.py文件中的同级引用同样需要改成这样的格式。具体参考文章:自定义模块同级调用

Windows的curses库下载

其实Windows并不支持curses库,所以你会看到‘No module named _curses’,这就需要下载非官方替代库unofficial-curses(下载地址在这里curses)找到适配自己电脑版本的.whl文件并下载,再通过pip install G:mypymodulecurses-2.2.1+utf8-cp38-cp38-win_amd64.whl(这是我的信息-win10.64bit,python3.8)安装。如果不确定自己的电脑版本请在命令行中运行python -m pip debug –verbose查看适用的版本,具体参考文章:查看适用版本

Redirection is not supported.

如果也和我一样遇到这个新鲜的错误“不支持重定向”,那么你肯定也是使用IDE而非命令行运行该项目,但实际上不能用任何IDE来运行有curses包的python文件,我在pycharm里跑的,自然跑不起来(也许你也是 ),具体参考文章:不能用IDE运行curses
那么现在需要打开命令行(我一般是win+R,输入cmd回车),用指令cd切换到你的python安装环境下具体到Scripts(因为几乎大家的pip.exe都默认在该文件夹,我的是C:UsersAdministratorAppDataLocalProgramsPythonPython38Scripts)再用pip install G:mypymodulecurses-2.2.1+utf8-cp38-cp38-win_amd64.whl进行下载,具体参考文章:在cmd中使用pip install。这时候再切换到根目录并输入指令python "main.py的绝对路径"回车运行即可,大部分人到这一步就可以把贪吃蛇小项目跑起来了。

conda环境下的报错

如果你不幸地在pip install正确的轮子文件后还是报错“No module named ‘_curses’ ”,那么也许你和我一样安装了多个环境并且你的python正处于conda环境,若提示“This Python interpreter is in a conda environment, but the environm ent has not been activated”那么你还需要先激活你的环境,具体参考文章:激活conda环境
此时你当然想直接conda install 刚才下载好的.whl文件(还是要切换到Scripts文件夹下),但是你会发现它并不适用,报错“PackagesNotFoundError: The following packages are not available from current channels”,可恶!解决办法为先运行anaconda search -t conda curses查询所有版本 选择适合自己的(适配Windows的真的好少)再conda install -c https://conda.anaconda.org/labscript-suite windows-curses下载即可(这个连接版本是我试出来确认可用的可以直接复制这句话),具体参考文章:conda环境安装curses库。安装好后就可以将贪吃蛇跑起来拉~

整个流程中还有别的问题也欢迎留言~

推荐阅读