无法导入ex47.game解决方法
由于项目都建立在自己电脑上,没有考虑怎么能让别人也简单的导入自己写的模块,本文主要用于自己记录与学习。
两种导入方法
1、第一种就是临时的导入路径,在关闭shell之后就会复原,每次使用模块都需要重新导入。具体操作如下图所示:
这样就可以把包含所想要导入的模块的路径放入sys.path中。
2、第二种是永久导入路径的方法之一,更改环境变量,在PYTHONPATH中添加所想要导入的模块的路径。如果环境变量中没有,就直接自己新建一个PYTHONPATH。如下图所示:
这种添加方法不管你电脑里有多少个版本的python,他们在运行时都会查看在PYTHONPATH中出现的路径,在刚添加完的时候,还是会反应没有这个名字的module,所以需要重启一下电脑,再次使用sys.path查看所含路径就会有了。
出现的小问题(不具有普遍性)
在新建ex47这个项目架构的时候,我的整个目录结构是这样的:
与练习46相对应的话,就是projects下面第一个ex47为skeleton,再下一级目录的ex47为NAME。
所以就出现了两个ex47,这种命名使我产生了混淆,导致最开始跟着书上代码建立game.py的时候我将该py放在了第一个ex47目录下,即与setup.py同级,导致在from … import …的时候,直接输入from game import Room即可测试成功,但是from ex47.game import Room时则会显示ex47中没有game.py。
疑问(未测试)
之前出现的小问题使得from game import Room可以直接调用,如果在projects下一级目录中建立了另一个项目(与ex47同级),同时 这个项目里面也有game.py,且game.py里也包含Room类,但内容是不同的。那from game import Room时会不会出现问题,它到底调用的是哪一个?