關於virtualenv虛擬環境中python版本的坑
通過virtualenv建立了基於python3的虛擬環境,啟用虛擬環境後發現執行程式時依然在用python2在解析,後折騰一番後發現原因是,虛擬環境中未pip install flask,導致執行程式時系統自動去載入系統預設的python2。折騰的經過如下:
通過如下兩行命令分別建立基於python2和python3版本的兩個虛擬環境:
virtualenv -p /usr/bin/python ~/virtualenv/one #python2 virtualenv -p /usr/local/python3/bin/python3 ~/virtualenv/two #python3
分別啟用兩個虛擬環境,檢視python版本對應沒問題:
[[email protected] one]# source bin/activate
(one) [[email protected] one]# python -V
Python 2.7.5
(one) [[email protected] one]#
[[email protected] two]# source bin/activate
(two) [[email protected] two]# python -V
Python 3.6.4
(two) [[email protected] two]#
用flask框架的入門程式測試:
1
2 from flask import Flask
3
4 app = Flask(__name__)
5
6
7 @app.route('/')
8 def hello_world():
9 return '這是首頁'
10
在基於python3的虛擬環境two中啟動程式,然後瀏覽器端訪問後報錯如下(編碼有誤,不支援中文):
百度,python2的確預設不支援中文,若要支援中文,需要在程式碼前加上#coding=utf-8;但python3預設是“utf-8”編碼,應該是支援中文的啊。難道解析程式的是python2???,另外網頁端報錯資訊裡有python2.7的字樣,我更懷疑這是python2。為了證明這是python2而不是python3,通過兩個版本對print列印語句的區別:
python2下執行print ('hhh','ggg')結果應該為:('hhh','ggg')
python3下執行print ('hhh','ggg')結果應該為: hhh ggg
驗證,基於python3的虛擬環境two下輸出依然為:('hhh','ggg'),這就證明這的確是python2
那麼問題來了,為什麼開始明明在基於python3的虛擬環境two中檢視python版本時的確顯示的是python3.6.4,但解析程式時會是python2呢??????????????????????????
後想了下會不會和flask有關,突然想到two虛擬環境下我好像沒pip install flask,檢視pip list如下:
(two) [[email protected] two]# pip list
Package Version
------------ -------
click 6.7
itsdangerous 0.24
MarkupSafe 1.0
pip 18.0
setuptools 40.2.0
Werkzeug 0.14.1
wheel 0.31.1
(two) [[email protected] two]#
載入flask後重新啟動程式不再報錯:
(two) [[email protected] app]# pip list
Package Version
------------ -------
click 6.7
Flask 1.0.2
itsdangerous 0.24
Jinja2 2.10
MarkupSafe 1.0
pip 18.0
setuptools 40.2.0
Werkzeug 0.14.1
wheel 0.31.1
(two) [[email protected] app]# ./start
* Environment: development
* Debug mode: on
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 155-900-164
網頁端中文顯示正常:
總結:使用virtualenv建立虛擬環境時,如果虛擬環境中未載入flask,那麼即使你的虛擬環境是基於python3的,但執行flask框架程式時,系統會自行載入python2來解析程式!!!
相關推薦
關於virtualenv虛擬環境中python版本的坑
通過virtualenv建立了基於python3的虛擬環境,啟用虛擬環境後發現執行程式時依然在用python2在解析,後折騰一番後發現原因是,虛擬環境中未pip install flask,導致執行程式時系統自動去載入系統預設的python2。折騰的經過如下: 通過如下兩行
python如何配置virtualenv虛擬環境,啟動兩個django環境
tps http virtual all pac sta virt 指向 第三方 1.安裝virtualenv pip3 install virtualenvpip install -i https://pypi.tuna.tsinghua.edu.cn/simple
windows下虛擬環境中建立Django專案(建立虛擬環境,安裝virtualenv,安裝Django,建立專案)
一、建立虛擬環境 pip install virtualenv1 要使用Django,首先要建立一個虛擬工作環境。我們先為專案建立一個資料夾learn,在資料夾中開啟命令列(shift+右擊),來建立另一個虛擬環境。 如果使用的是python 3,可使
Fedora升級後Python虛擬環境中的pip報錯
今日Fedora從28升級到29後,進入Python的虛擬目錄後,本來想使用pip更新下包,結果報錯了,如下: Traceback (most recent call last): File "/home/kowalski/Projects/rifm/venv/bin/pip", line 7, in
開機shell啟動虛擬環境中的python程式碼
上一篇文章是開機自啟動shell指令碼。網上很多例子。 我的程式碼tt.sh sudo -i . /root/.virtualenvs/cv/bin/activate python3 /home/pi/t2.py 1、進入root使用者 2、啟動虛擬環境,使用絕對路徑。 3、執
讓虛擬環境解決python多版本並行
一.安裝篇 1.本文作業系統為CentOS7 依賴包(安裝時可能還存在其他依賴包,結合報錯進行安裝) [[email protected] home]# yum install make build-essential libssl-dev zlib1g-dev libbz2-dev libr
virtualenv 虛擬環境 (python)
What's the difference between “virtualenv” and “-m venv” in creating Virtual environments(Python) venv is a package shipped directly with python 3 (N
python virtualenv虛擬環境介紹
最近折騰tensorflow的編譯安裝,重新用virtualenv, 發現生疏了,就簡單記錄下吧在開發Python應用程式的時候,系統安裝的Python3只有一個版本:3.4。所有第三方的包都會被pip安裝到Python3的site-packages目錄下。如果我們要同時開發
Ubuntu系統下無法使用pip將安裝包安裝到Python虛擬環境中
- Background All I want to do is to Install and deploy Django into Python virtual environment to develope a web application, which is proceed follow
在Jupyter notebook中使用特定虛擬環境中的python的kernel
模塊 library 選項 min 效果 .json file note port 在虛擬環境tf中安裝完tensorflow後,在虛擬環境tf打開的jupyter裏發現只有一個kernel-python3,新建一個文件, import tensorflow as
python虛擬環境中安裝Scrapy
為了保證python的乾淨,今天嘗試在虛擬機器中安裝Scrapy,BUG多多,終於安裝成功了,分享出來, 本機: python2.7.12 win7 64位 python安裝好以後使用pip安裝虛擬環
Mac系統中安裝virtualenv虛擬環境
總體來說有三個步驟.1.建立工作目錄.python3 -m venv lanyue_env注意:2.安裝virtualenv.pip3 install --user virtualenv2.啟用虛擬環境.source lanyue_env/bin/activate3.如果要停
虛擬環境的安裝包如何匯出,如何安裝到新的虛擬環境中,virtualenv
在我們使用Python開發中,一般會使用到virtualenv來做環境的隔離,防止汙染本地的Python環境在我們有多個虛擬環境時候,如何複製一個虛擬環境的包到另一個環境中去呢?1.到原始的virtua
ubuntu下使用Anaconda應用:建立虛擬環境實現python不同版本切換、科學計算工具包安裝
Anaconda的安裝 Anaconda的下載頁參見官網下載,Linux、Mac、Windows均支援。 安裝時,會發現有兩個不同版本的Anaconda,分別對應Python 2.7和Python 3.5,兩個版本其實除了這點區別外其他都一樣。後面我們會看到,安裝哪個版本並不本質,因為通過環境管理,我們可以
Ubuntu16.04下安裝Python擴充套件包-scipy,numpy,matplotlib(普通環境和virtualenv虛擬環境)
1、普通環境安裝擴充套件 sudo apt-get install python-scipy sudo apt-get install python-numpy sudo apt-get install python-matplotlib 2、在Python虛擬環境中安
邊做邊學Python Flask Web開發(2)-- 使用VirtualEnv虛擬環境
使用VirtualEnv虛擬環境 概述 說VirtualEnv是Python的一大神器不足為過,如果你在生活中也有那麼一點點的“潔癖”,相信你會喜歡上這個東西。 我們知道使用Python的過程中會安裝各種庫、包,甚至有時候還需要Python2和Pyth
pyenv虛擬環境管理python多版本和軟體庫
可能大家在日常工作中會遇到這麼個問題,現在基本的linux系統都是自帶老版本的python2.7.x版本,我又不想用老版本,但直接升級可能會出問題,或是依賴老版本的程式就執行不了,有沒辦法能安裝3.x新版本的? 答案是有的,請使用pyenv,可以支援管理多個python版本,任意使用。 其實官方於2019年底
配置virtualenv虛擬環境
clas pre highlight .sh 添加 per 指定 不同 virtual virtualenvwrapper是virtualenv的擴展工具,可以方便的創建、刪除、復制、切換不同的虛擬環境,不管是開發還是生產環境都盡量用虛擬環境來做 1.安裝virtual
淺談pipreqs組件(自動生成需要導入的模塊信息) 和 virtualenv(虛擬環境)
部署 信息 進行 方式 情況 vat sha bsp 路徑 一、pipreqs組件 pipreqs的作用 一起開發項目的時候總是要搭建環境和部署環境的,這個時候必須得有個python第三方包的list,一般都叫做requirements.txt。 如果一個項目使用時vi
開啟虛擬機器顯示“次虛擬環境中的長模式將被禁用”
近日,給一新機安裝VMware虛擬機器,在開啟虛擬機器的時候出現下圖的提示,無法正常開啟: 出現上圖的原因,主要是bios介面沒開啟對應的許可權,需要進入該模式下開啟,各電腦進入bios命令不一,有點F2,F1,F12 如下圖,將兩者的許可權都設定為enable狀態儲