V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xiaohundun
V2EX  ›  Python

碰到了个特别奇怪的 Python 问题

  •  
  •   xiaohundun · 19 天前 · 1319 次点击
    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 ,啊啊啊啊啊

    19 条回复    2024-04-18 14:35:30 +08:00
    xiaohundun
        1
    xiaohundun  
    OP
       19 天前
    我就重启了下电脑,改了个 unicode 变量,就坏了,重启之前我还好好的执行着呢
    xiaohundun
        2
    xiaohundun  
    OP
       19 天前
    发现是 vscode 问题,我在 terminal 里面执行是可以的。。
    GeruzoniAnsasu
        3
    GeruzoniAnsasu  
       19 天前
    首先 python3 不需要 encoding 的 header

    然后,先检查你的 interpreter 选对了没,你很可能选到了 python2 作为 interpreter
    再检查不可见字符,比如 BOM.
    xiaohundun
        4
    xiaohundun  
    OP
       19 天前
    @GeruzoniAnsasu 大佬!你说的第一个我检查了下发现解释器不对,我的其他 terminal 都可以自动切换 conda 环境,但是 vscode 这里不会,用的确实是 python2 ,谢谢!
    GeruzoniAnsasu
        5
    GeruzoniAnsasu  
       19 天前   ❤️ 2
    另外 \xe7 \xe9 是常见的中文字符 utf8 编码序列的第一个字节,你应该对此建立点直觉。

    p.s. \xe2 是 \u2610 这个符号的 utf8 编码序列的第一个字节
    AS4694lAS4808
        6
    AS4694lAS4808  
       19 天前
    用 notepad plus plus 打开,转码为 utf-8 无 bom ,再执行试试?
    xiaohundun
        7
    xiaohundun  
    OP
       19 天前
    @GeruzoniAnsasu #5 好的多谢,我正在排查是什么导致 vscode 没有切换环境
    woodfizky
        8
    woodfizky  
       19 天前
    纯好奇,为啥 OP 同时装了 Python2 ?
    xiaohundun
        9
    xiaohundun  
    OP
       19 天前
    @woodfizky mac 自带的吧
    xiaohundun
        10
    xiaohundun  
    OP
       19 天前
    你们看我的 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
    ```
    goodryb
        11
    goodryb  
       19 天前
    这种问题不如装个通义灵码,代码和报错都扔进去,直接出结果
    AS4694lAS4808
        12
    AS4694lAS4808  
       19 天前
    Terminal 的问题啊。。试试直接 source ~/miniconda3/etc/profile.d/conda.sh ,然后再 conda activate
    xiaohundun
        13
    xiaohundun  
    OP
       19 天前
    @goodryb 我问过 gpt 让我加编码头的= =可能我没掌握方法吧
    xiaohundun
        14
    xiaohundun  
    OP
       19 天前
    @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
    GeruzoniAnsasu
        15
    GeruzoniAnsasu  
       19 天前
    我没用过 conda ,但在 vscode 里是可以手动选 venv 的 interpreter 还是系统 interpreter 的

    cmd + shift + p select python interpreter 试试
    xiaohundun
        16
    xiaohundun  
    OP
       19 天前 via iPhone
    @GeruzoniAnsasu 这个也有问题 我选的是正确的解释器 但是我在执行脚本的时候环境还是错的
    xiaohundun
        17
    xiaohundun  
    OP
       19 天前 via iPhone
    @GeruzoniAnsasu 总之就是无论如何切换不了
    dorothyREN
        18
    dorothyREN  
       19 天前
    第一行 加个 #!/usr/bin/env python3
    lolizeppelin
        19
    lolizeppelin  
       12 天前
    dos2unix
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1628 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:33 · PVG 00:33 · LAX 09:33 · JFK 12:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.