1. 程式人生 > >20180910:解決互動環境無法匯入自己寫的模組(models.py)的問題。

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()
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']
>>>