⑴ 怎麼在jupyter中加入python 3 kernel
jupyter notebook 增加kernel的方法
有很多朋友會遇到這樣一個問題:在anaconda中創建了多個環境,也許python版本是一樣的,但是裝的包以及版本不一樣。啟動jupyter notebook後,在new的下拉菜單中卻無法使用這些環境。本文就解決這樣的問題。
假如我現在Ubuntu系統自帶的python是python2,anaconda默認的是python3,我還有一個python2的自定義的環境,命名為myPython2。打開jupyter notebook發現只有python3可用,而我缺想使用myPython2這個環境。
首先,在myPython2環境下確認是否安裝了ipykenel這個包,如果沒有則安裝。
然後,在這個環境下輸入python -m ipykernel install --name XXXX後邊的名字可以自己定義,可以和環境一樣,也可以隨便起,是顯示在jupyter notebook中的,這里我依然使用myPyhon2這個名字。
然後啟動jupyter,會發現現在有了myPython2這個選項了!
其他:
一個方式是加了sudo手動指定python路徑,一般是在anaconda2下,可以which一下看一下。(推薦)
另一個方法比較麻煩:
在第2步中可能會遇到問題,首先需要sudo許可權,但是使用了sudo許可權後,提示找不到ipykernel這個包。這里原因是sudo下調用的python不是你環境中的python,而是系統自帶的python。如果遇到這樣的情況,則需要修改系統默認的python版本。
首先登錄root用戶,或者sudo執行以下命令。
輸入update-alternatives --list python查看可供替換的python版本。
如果提示沒有,別擔心,只是還沒有被發現,我們需要告訴下系統。update-alternatives --install /usr/bin/python python /usr/local/share/jupyter/kernels/mypython2 1。–install 選項使用了多個參數用於創建符號鏈接。最後一個參數指定了此選項的優先順序,如果我們沒有手動來設置替代選項,那麼具有最高優先順序的選項就會被選中。
然後我們可以通過update-alternatives --config python來進行選擇了。
⑵ python 3以上的版本沒有合適的PyGraphics安裝么
有些困難呢。它依賴pygame,pil。我印象中pygame似乎不能在python3上運行。
當然如果pygame,pil等都有python3的版本,pygraphics按理也可以無障礙的移植到python3。你可以下載源代碼自己編譯。
類似這些東西。最好不要升級除非必要,不能用了。python2.1(1.5, 1.6)開始我一直都在升級後來升到python2.7後就很少再升級,也不想學python3。
如果一定要升級最好全部文件都重新安裝。聽說有virtual_env這個工具,可以讓你安裝多個python實例。不過我還沒有試過。
⑶ 為什麼會有 Python 3 的存在
你如果是問Python2x的版本為什麼更新到Python2.7就停止了2.8版本的發布而直接發布python3,那還有得說,因為問題多了唄(比如編碼的問題),開發者們合計著干個大的,索性把現有版本存在得問題放在一起解決掉,這種重大得舉動顯然得開辟一個新的版本系列才可以彰顯出意義,所以有了python3。
你如果想問的問題等同於"為什麼會有Iphone 7",那就算了。
⑷ python3 中的try... except Exception,e: ...怎麼不能用了變成什麼了呢
語法錯誤,應該改成下列語法:
python3 中捕捉異常需要使用try/except語句,具體格式如下:
try:
<語句> #運行別的代碼
except <名字>:
<語句> #如果在try部份引發了'name'異常
except <名字>,<數據>:
<語句> #如果引發了'name'異常,獲得附加的數據
else:<語句> #如果沒有異常發生
編輯如下:
「拓展資料「:
try的工作原理是,當開始一個try語句後,python就在當前程序的上下文中作標記,這樣當異常出現時就可以回到這里,try子句先執行,接下來會發生什麼依賴於執行時是否出現異常。
如果當try後的語句執行時發生異常,python就跳回到try並執行第一個匹配該異常的except子句,異常處理完畢,控制流就通過整個try語句(除非在處理異常時又引發新的異常)。
如果在try後的語句里發生了異常,卻沒有匹配的except子句,異常將被遞交到上層的try,或者到程序的最上層(這樣將結束程序,並列印預設的出錯信息)。
如果在try子句執行時沒有發生異常,python將執行else語句後的語句(如果有else的話),然後控制流通過整個try語句。
⑸ python 2 中函數 *args 用法和 python 3 不一樣嗎
根本原因在於3可以有"部分剩餘參數"的概念了
例如:
a,*b,c=range(5)
中間的b可以收集到3個參數
所以這樣的時候,定義def func(x, y, *args, z=1),python3知道除了z=1的部分,其他的都是*args
調用func(1,2,3,4,5)的時候,z=5,args=[3,4]
而Python2不可以,所以python的z=1必須在*args和**kwargs這種剩餘參數收集之前
⑹ Python3中哪個方法可以完成Builtwith同樣的作用
通過改動builtwith的文檔來達到同樣的效果,讓它適合python3改動了__init__.py中的prite語法,然後except Exception as e:,但是代碼邏輯還是不對,執行builtwith.parse('http://www.hao123.com')接收不到url返回的數據`!
⑺ 如何評價 Python 3 打破向後兼容的決定
打破向後兼容的決定並不是開發者個人好惡,是權衡考慮以後的決斷。
python語言從1989年誕生至今已經進入TIOBE編程語言排行榜第二,從以前的腳本語言發展到現在適應於各大應用領域。這有一些當初留下的坑需要填補,比如命名、語法、編碼問題、多線程問題等,有些可以兼容,有些則很難兼容,長痛不如短痛,這時候打破向後兼容或許能鳳凰涅槃。
盡管願景美好,一個已經廣泛使用的語言,打破向後兼容後產生的新版語言的過渡時間依舊漫長,這一點從windows發展的過程可以看到,語言打破兼容後周圍的生態環境同步升級是一個緩慢的過程。
有一句話:「It is a lesson which all history teaches the wise, to put trust in ideas and not in circumstance.」Python 2到Python 3變了很多,但The Zen of Python沒變,所以我依然挺它!
⑻ Python 2 和 Python 3 都有什麼區別
> 1. print不再是語句,而是函數,比如原來是 print 'abc' 現在是 print('abc')
但是 python2.6+ 可以使用 from __future__ import print_function 來實現相同功能
> 2. 在Python 3中,沒有舊式類,只有新式類,也就是說不用再像這樣 class Foobar(object): pass 顯式地子類化object
但是最好還是加上. 主要區別在於 old-style 是 classtype 類型而 new-style 是 type類型
> 3. 原來1/2(兩個整數相除)結果是0,現在是0.5了
python 2.2+ 以上都可以使用 from __future__ import division 實現改特性, 同時注意 // 取代了之前的 / 運算
> 4. 新的字元串格式化方法format取代%
錯誤, 從 python2.6+ 開始已經在str和unicode中有該方法, 同時 python3依然支持 % 算符
> 6. xrange重命名為range
同時更改的還有一系列內置函數及方法, 都返回迭代器對象, 而不是列表或者 元組, 比如 filter, map, dict.items 等
> 7. !=取代 < >
python2 也很少有人用 < > 所以不算什麼修改
> 8. long重命名為int
不完全對, python3 徹底廢棄了 long+int 雙整數實現的方法, 統一為 int , 支持高精度整數運算.
> 9. except Exception, e變成except (Exception) as e
只有 python2.5 及以下版本不支持該語法. python2.6 是支持的. 不算新東西
> 10. exec變成函數
類似 print() 的變化, 之前是語句.
⑼ Python 2 和 Python 3 有哪些主要區別
> 1. print不再是語句,而是函數,比如原來是 print 'abc' 現在是 print('abc')
但是 python2.6+ 可以使用 from __future__ import print_function 來實現相同功能
> 2. 在Python 3中,沒有舊式類,只有新式類,也就是說不用再像這樣 class Foobar(object): pass 顯式地子類化object
但是最好還是加上. 主要區別在於 old-style 是 classtype 類型而 new-style 是 type類型
> 3. 原來1/2(兩個整數相除)結果是0,現在是0.5了
python 2.2+ 以上都可以使用 from __future__ import division 實現改特性, 同時注意 // 取代了之前的 / 運算
> 4. 新的字元串格式化方法format取代%
錯誤, 從 python2.6+ 開始已經在str和unicode中有該方法, 同時 python3依然支持 % 算符
> 6. xrange重命名為range
同時更改的還有一系列內置函數及方法, 都返回迭代器對象, 而不是列表或者 元組, 比如 filter, map, dict.items 等
> 7. !=取代 < >
python2 也很少有人用 < > 所以不算什麼修改
> 8. long重命名為int
不完全對, python3 徹底廢棄了 long+int 雙整數實現的方法, 統一為 int , 支持高精度整數運算.
> 9. except Exception, e變成except (Exception) as e
只有 python2.5 及以下版本不支持該語法. python2.6 是支持的. 不算新東西
> 10. exec變成函數
類似 print() 的變化, 之前是語句.
簡單補充下
* 主要是類庫的變化, 組織結構變了些. 但功能沒變. urlparse - > urllib.parse 這樣的變化
* 最核心的變化它沒有說, 對 bytes 和 原生 UNICODE 字元串的支持, 刪除了 unicode 對象, str 為原生 unicode 字元串, bytes 替代了之前的 str 這個是最核心的.
* 其它... 貌似不怎麼重要了.