20180910:解决交互环境无法导入自己写的模块(models.py)的问题。

创建好了models.py模块后,视频中是在改模块最后加入了db.creat_all,然后直接在pycharm中运行该模块,来创建我们需要的movie数据库文件,并同时在其中创建出各个“表”,完成后再注释掉“db.create_all”的代码,跟着视频的这种操作没有问题,能够正确完成。

问题:在交互式模式下无法正确导入models.py模块,完成对象创建。

我看到flask-sqlalchemy文档中介绍,通常是通过从交互式 Python shell 中导入 db 对象并且调用SQLAlchemy.create_all() 方法来创建表和数据库:

>>> from yourapplication import db
>>> db.create_all()

flask-sqlalchemy文档地址:http://www.pythondoc.com/flask-sqlalchemy/quickstart.html
根据文档说明,尝试从Terminal中使用命令操作,结果发现报错:

F:\OneDrive\movie_project>python
Python 3.7.0b3 (v3.7.0b3:4e7efa9c6f, Mar 29 2018, 18:42:04) [MSC v.1913 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import models
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'models'
>>>

显示没有这个模块,这个问题的原因是:打开交互式环境后,是默认路径,而我的models.py文件不是放在这个路径下的,所以import models 无法实现导入(注意,import的时候是models,而不是models.py),要想正确导入这个模块,必须用命令行语句 ,进入到models.py文件的目录 F:\OneDrive\movie_project\app> 里面,这个时候,再运行import models,就ok了。

我们可以通过 import sys 来查看交互式环境的默认路径:

>>> import sys
>>> sys.path
['', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\DLLs', 'C:\\Users\\Ad
ministrator\\AppData\\Local\\Programs\\Python\\Python37\\lib', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37', 'C:\\Users\\Administrator\\AppData\\Local\\Progr
ams\\Python\\Python37\\lib\\site-packages']
>>>

本文参考:https://blog.csdn.net/GeekLeee/article/details/52503277

猜你喜欢

转载自blog.csdn.net/zyself/article/details/82597063