我們通過pip安裝了一個python庫,可能在編輯器中不能使用(如:pycharm,vscode…)這是因為:
通過pip安裝的庫預設一般安裝在全域性環境中,而PyCharm一般會預設建立虛擬環境,所以兩者的環境不一致,導致安裝的包不能正常匯入使用,解決辦法有一般有2種:
•給PyCharm安裝虛擬環境,使庫安裝虛擬環境中
•將PyCharm的環境設定為全域性環境,即我們通常使用的Python,設定為Python的安裝目錄即可:
如圖下 紅框即為全域性變數:
•一般情況下,Python第三方庫安裝是直接通過pip install xxx的方式進行安裝的,這樣會使庫安裝在python全域性環境中。
這樣做面臨的問題:如果用Flask 1.10寫了個網站,但是同時有一個Flask 0.9開發的專案需要開發維護,並且有可能Flask 1.10不再相容Flask 0.9的一些語法,這就需要同時擁有Flask 1.10和Flask 0.9兩種不同環境,這時我們就需要通過虛擬環境來解決此類問題。
•python中虛擬化管理工具很多,最常用的是pipenv
•Windows下安裝:
pip install pipenv
•Mac下安裝
brew install pipenv
•Linux下安裝
pip install pipenv
虛擬環境預設會安裝到系統磁碟(C槽)下的當前使用者目錄下的== .virtualenvs 目錄下,如果想指定安裝到其他目錄,可以設定系統環境變數==,在系統變數中新增變數,變數名為WORKON_HOME,值為需要指定安裝的目錄(資料夾)
名字可以自己取 自己可以找到的資料夾
如圖所示:
•WIN+R 輸入cmd進入:
•進入需要建立虛擬環境的資料夾:
•安裝pipenv之後即可建立虛擬環境。建立虛擬環境使用命令pipenv shell 如圖所示:
•安裝完成後使用pip list命令,即可看到此虛擬環境安裝的庫
•虛擬環境安裝好之後,可在PyCharm中設定虛擬環境為當前建立的虛擬環境,即定位選擇虛擬環境下的python.exe可執行檔案,方法與前面相同。
•在建立虛擬環境後,虛擬環境目錄下會生成pipfile檔案,內容如下:
[[source]]
name = "pypi"
url = "https://pypi.org/simple" # 在預設情況使用國外源下載庫會非常慢,可以指定國內pip源,
verify_ssl = true
[dev-packages] # 開發環境
[packages] # 生產環境
[requires] # Python版本
python_version = "3.7"
•pipfile.lock詳細記錄環境依賴,並且使用了Hash演演算法以保證完整的對應關係。
•如果需要將安裝的庫記錄到Pipfile中,可以使用pip install --dev 庫名將庫安裝到開發環境。
•在虛擬環境中用run引數執行專案範例如下:
pipenv run python manage.py runserver
•pipenv有一個缺點:
•lock不穩定而且時間非常長,所以安裝包的時候記得加上==–skip-lock==,如下:
pipenv install django --skip-lock
•最後開發完成要提交到倉庫的時候再執行pipenv lock命令。
flask是一款非常流行的Python Web框架,誕生於2010年,作者是Armin Ronacher,這個專案最初只是作者在愚人節的一個玩笑,後來由於非常受歡迎,逐漸成為一個正式的專案。
flask自2010年釋出第一個版本以來,大受歡迎,深得開發者的喜愛,並且在多個公司已經得到了應用,flask能如此流行的原因,可以分為以下幾點:
•微框架、簡潔,只做它需要做的,靈活度非常高,給開發者提供了很大的擴充套件性。
•Flask不會幫開發者做太多的決策,一切都可以按照自己的意願進行更改。
•使用Flask開發資料庫的時候,具體是使用SQLAlchemy還是MongoEngine,選擇權完全掌握在開發者自己的手中。區別於Django,Django內建了非常完善和豐富的功能,並且如果想替換成開發者想要的,要麼不支援,要麼非常麻煩。
•把預設的Jinija2模板引擎替換成其他模板引擎都是非常容易的。
•Flask和相應的外掛寫得很好。
•開發效率非常高,比如使用SQLAlchemy的ORM運算元據庫可以節省開發者書寫大量sql的時間。
# 從flask框架中匯入Flask類
from flask import Flask
# 傳入__name__初始化一個Flask範例
app = Flask(__name__)
# 裝飾器,將當前路由對映到指定函數
@app.route('/')
def hello_world():
return 'Hello World'
if __name__ == '__main__':
app.run()
•輸出結果:
* Serving Flask app "first" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
•1. 此時只需點選圖中藍色網址即可看到輸出‘Hello World’
•2. 也可在在瀏覽器中開啟http://127.0.0.1:5000/
•當再次返回pycharm時,可以在開啟的服務狀態列下看到請求的記錄,如:
127.0.0.1 - - [13/Oct/2020 19:19:45] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [13/Oct/2020 19:19:45] "GET /favicon.ico HTTP/1.1" 404 -
•注意說明
•@app.route(’/’) :裝飾器對映URL和執行的函數。這個設定將URL對映到指定的函數上,例中指定當前路由為根目錄,如果為根目錄時也可以不寫 /,但是儘量寫上以示區別。
•app.run():是讓flask專案執行起來,可以指定主機號和埠號。
預設的host是127.0.0.1,port為5000,host=0.0.0.0可以讓其他電腦也能存取到該網站,port可以指定存取的埠。