作者fragmentwing (片翼碎夢)
看板Python
標題[問題] f'{變數名稱=}'突然不能用
時間Tue Feb 21 13:12:00 2023
如題 python3.8以後有新用法,理論上如下:
程式碼:
variable_name = 10
f'get {variable_name=}'
執行:
get variable_name = 10
我切換版本到3.7.8再切回3.10.5之後,突然就不能用這個功能了
(會報文法錯誤)
然後我以前裝的package也突然全部不能用了要重裝
到底是為甚麼?還有救嗎?
用的IDE是VSCODE,已經有把Activate Environment那個選項取消了
https://imgur.com/Latgr9d
另外,我用vscode內的notebook跑pip list,出來的和我的
C:\Users\User\AppData\Local\Programs\Python\
Python310\Lib\site-packages
底下的package一樣多(約200項)
但是我用執行的方式跑指令pip list,卻只有顯示我最近重裝的那幾個package
(感覺是沒有真的把版本切回3.10.5的樣子,因為我查看
C:\Users\User\AppData\Local\Programs\Python\
Python37\Lib\site-packages
裝的差不多就這幾個東西)
補充,這是我的現狀:
https://imgur.com/sirVxiK
右下編譯器選3.10.5,執行起來path.sys顯示就是在3.7.8那邊
網路上教學都只教到改編譯器那邊,好像沒有人講編譯器那邊改過後還是不行該怎麼辦
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.139.14.183 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1676956324.A.1A6.html
※ 編輯: fragmentwing (223.139.14.183 臺灣), 02/21/2023 13:18:01
1F:→ fragmentwing: 嗯 找了個叫print(sys.path)的碼來確認 02/21 16:22
2F:→ fragmentwing: 確實是給我用到Python37那邊 02/21 16:22
3F:→ fragmentwing: 然後VSCODE右下角的切換似乎只是編輯介面上的切換 02/21 16:22
4F:→ fragmentwing: 完全不影響到實際上使用的編譯器是哪邊 02/21 16:23
※ 編輯: fragmentwing (223.139.14.183 臺灣), 02/21/2023 16:50:01
5F:→ fragmentwing: 目前我只能直接刪掉3.7.8 讓vscode只有3.10能抓… 02/21 17:01
6F:→ fragmentwing: … 02/21 17:01
7F:→ fragmentwing: 最毛的是我就算重裝3.7.8的時候選不要加入環境變數 02/21 17:06
8F:→ fragmentwing: 所以在vscode內搜尋不到3.7.8的環境變數 但是執行的 02/21 17:06
9F:→ fragmentwing: 時候還是會自動選擇3.7.8……這純粹是想氣死我嗎? 02/21 17:06
10F:推 TuCH: 學一下conda 02/21 17:33
11F:推 ddavid: VSCode 手動開終端機,以及按執行開啟終端機,兩者的設定 02/21 18:31
12F:→ ddavid: 點不同,要分別確認一下 02/21 18:33
13F:→ ddavid: 不過用 conda 的話應該不用特別做什麼額外設定就會抓到, 02/21 18:34
14F:→ ddavid: 除非真的搞來搞去搞爛了 02/21 18:34
15F:→ fragmentwing: 想問一下手動是指什麼?command line嗎? 02/21 18:43
16F:→ fragmentwing: 如果是的話我也試過了QQ 02/21 18:44
17F:→ lycantrope: python.defaultInterpreterPath沒設定 02/21 22:20
18F:→ lycantrope: 可以在同一資料夾內 .vscode/settings.json 裡面指定 02/21 22:21
19F:→ lycantrope: 然後你關掉active env 在vscode開terminal當然不會幫 02/21 22:23
20F:→ lycantrope: 自動activate環境啊 02/21 22:24
21F:→ fragmentwing: 痾……照你說的做,不行欸,它好像就是會自動套用最 02/22 07:25
22F:→ fragmentwing: 新下載的那個編譯器 02/22 07:25
23F:→ fragmentwing: 而且我去查你說的default,自始至終都是設給3.10.5 02/22 07:25
24F:→ lycantrope: 就算講了解法你也聽不懂,沒救。 02/22 08:03
25F:→ fragmentwing: 你確定不是剛好你的解法在我這邊不管用嗎? 還是你的 02/22 08:45
26F:→ fragmentwing: setting.json不是我們按f1後用setting搜出來的那個? 02/22 08:45
27F:→ fragmentwing: 這裡不是stack overflow講話沒必要這麼嗆吧 02/22 08:45
29F:→ fragmentwing: 照你的說法,應該是改成這樣?但還是行不通 02/22 08:50
30F:→ lycantrope: 設定放在another.py資料夾下的.vscode/settings.json 02/22 09:13
31F:→ lycantrope: vscode重新開資料夾才能覆寫你之前的設定 02/22 09:13
32F:→ lycantrope: 在vscode本身設定又不影響已經設置的workplace 02/22 09:14
33F:→ fragmentwing: .py為什麼會是個「資料夾」? 02/22 09:28
34F:→ fragmentwing: 你的意思是應該開一個新folder然後在該folder內放一 02/22 09:28
35F:→ fragmentwing: 個setting.json來指向特定的編譯器嗎? 02/22 09:28
36F:→ fragmentwing: 啊 我可能找到答案了 是python installer造成的問題 02/22 09:49
37F:→ fragmentwing: 的樣子 不過我還不確定怎麼解 02/22 09:49
38F:→ fragmentwing: 更正一下 比較準確的說法是python在windows的instal 02/22 09:52
39F:→ fragmentwing: ler 02/22 09:52
40F:推 Abieskawa: 我有遇到類似問題,後來使用conda (註:~/也不行)ac 03/02 10:22
41F:→ Abieskawa: tivate 環境的絕對路徑給你參考 03/02 10:22
43F:推 lycantrope: 推樓上,有拍教學,佛心來著www 03/03 14:36
44F:推 s860134: 多學多看少質疑,都在講同件事只是你聽無 03/03 16:08
45F:→ fragmentwing: 這和l大講的不同吧…… 03/06 18:40
46F:→ fragmentwing: 我是說h大講的 另外h大聲音好聽 03/06 18:41
47F:→ fragmentwing: 應該說 層級上是不同的 反正照l大的方法是無法解決 03/06 18:46
48F:→ fragmentwing: 問題 應該真的只能用conda去解…… 03/06 18:46
49F:→ lycantrope: 你爽就好,現在不懂以後還是會碰到一樣問題。 03/06 21:03
50F:→ fragmentwing: 我也只能說 你高興 我高興就好 03/06 21:51