box = "\u2610"
check = "\u2611"
我在我的 py 文件里修改过这两个变量为 unicode ,然后我的文件就再也执行不了了,vscode 好像坏掉了
我尝试在文件头部加编码结果还是报错
# -*- mode: python -*-
# -*- coding: utf-8 -*-
报错
File "青浦.py", line 38
msq = f"{item['通用名']} {item['规格']} x {item['销售数量']}"
^
SyntaxError: invalid syntax
我如果不加编码就报错:
File "青浦.py", line 7
SyntaxError: Non-ASCII character '\xe7' in file 青浦.py on line 7, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
好无语啊,如果不在文件头部加编码,一会儿报错\xe7 一会又是 \xe2 \xe9 ,啊啊啊啊啊
1
xiaohundun OP 我就重启了下电脑,改了个 unicode 变量,就坏了,重启之前我还好好的执行着呢
|
2
xiaohundun OP 发现是 vscode 问题,我在 terminal 里面执行是可以的。。
|
3
GeruzoniAnsasu 260 天前
首先 python3 不需要 encoding 的 header
然后,先检查你的 interpreter 选对了没,你很可能选到了 python2 作为 interpreter 再检查不可见字符,比如 BOM. |
4
xiaohundun OP @GeruzoniAnsasu 大佬!你说的第一个我检查了下发现解释器不对,我的其他 terminal 都可以自动切换 conda 环境,但是 vscode 这里不会,用的确实是 python2 ,谢谢!
|
5
GeruzoniAnsasu 260 天前 2
另外 \xe7 \xe9 是常见的中文字符 utf8 编码序列的第一个字节,你应该对此建立点直觉。
p.s. \xe2 是 \u2610 这个符号的 utf8 编码序列的第一个字节 |
6
AS4694lAS4808 260 天前
用 notepad plus plus 打开,转码为 utf-8 无 bom ,再执行试试?
|
7
xiaohundun OP @GeruzoniAnsasu #5 好的多谢,我正在排查是什么导致 vscode 没有切换环境
|
8
woodfizky 260 天前
纯好奇,为啥 OP 同时装了 Python2 ?
|
9
xiaohundun OP @woodfizky mac 自带的吧
|
10
xiaohundun OP 你们看我的 vscode ,无法切换环境= =
``` (base) ➜ Prescription_Generater which python /Library/Frameworks/Python.framework/Versions/2.7/bin/python (base) ➜ Prescription_Generater conda activate base (base) ➜ Prescription_Generater which python /Library/Frameworks/Python.framework/Versions/2.7/bin/python (base) ➜ Prescription_Generater . /Users/xxx/anaconda3/bin/activate && conda activate /Users/xxx/anaconda3; (base) ➜ Prescription_Generater which python /Library/Frameworks/Python.framework/Versions/2.7/bin/python (base) ➜ Prescription_Generater ``` |
11
goodryb 260 天前
这种问题不如装个通义灵码,代码和报错都扔进去,直接出结果
|
12
AS4694lAS4808 260 天前
Terminal 的问题啊。。试试直接 source ~/miniconda3/etc/profile.d/conda.sh ,然后再 conda activate
|
13
xiaohundun OP @goodryb 我问过 gpt 让我加编码头的= =可能我没掌握方法吧
|
14
xiaohundun OP @AS4694lAS4808 #12 不行,
(base) ➜ Prescription_Generater source /Users/xxx/anaconda3/etc/profile.d/conda.sh (base) ➜ Prescription_Generater conda activate base (base) ➜ Prescription_Generater which python /Library/Frameworks/Python.framework/Versions/2.7/bin/python (base) ➜ Prescription_Generater |
15
GeruzoniAnsasu 260 天前
我没用过 conda ,但在 vscode 里是可以手动选 venv 的 interpreter 还是系统 interpreter 的
cmd + shift + p select python interpreter 试试 |
16
xiaohundun OP @GeruzoniAnsasu 这个也有问题 我选的是正确的解释器 但是我在执行脚本的时候环境还是错的
|
17
xiaohundun OP @GeruzoniAnsasu 总之就是无论如何切换不了
|
18
dorothyREN 260 天前
第一行 加个 #!/usr/bin/env python3
|
19
lolizeppelin 253 天前
dos2unix
|