8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

尽管有“禁用”注释,但 Pylint 语法错误仍未得到抑制

Essex Boy 2月前

76 0

我正在为 Ansys Mechanical 编写脚本,这些脚本是用 IronPython 2.7.0.40 编写的。在我的脚本中,我需要为 ContactTimeStepControls.None 分配一个属性。请注意,这里的 None 不是 None

我正在为 Ansys Mechanical 编写脚本,这些脚本是用 IronPython 2.7.0.40 编写的。在我的脚本中,我需要为 分配一个属性 ContactTimeStepControls.None 。请注意, None 这里的 不是 None 对象。[1]

我的问题是 VS Code 中的 Pylint 扩展将 None 此处的使用标记为语法错误(可能是因为它认为它是对象 None )并拒绝评估其余代码。以下是它给出的错误消息:

SyntaxError:语法无效(file:///[PathToMyScript],第 264 行)编译 [Ln 264,Col 80]

解析失败:'无效语法(,第 264 行)'Pylint(E0001:语法错误)[Ln 264,Col 81]

我尝试通过以下两种方式禁用该错误消息:

# pylint: disable=syntax-error
Cxn.TimeStepControls = ContactTimeStepControls.None

# pylint: disable=E0001
Cxn.TimeStepControls = ContactTimeStepControls.None

两者都无法抑制错误。

以下是一个屏幕截图:

Example of Pylint Error

因此我有三个问题:

  1. 我对 Pylint 的抑制是不是出了什么问题?
  2. 是否有某种方法可以构造代码以避免错误(请注意,我无法更改的成员 ContactTimeStepControls )?
  3. 还有其他方法可以抑制此行上的 Pylint 错误吗?

[1] 输出如下 dir(ContactTimeStepControls) (参见 粗体 部分):

['AutomaticBisection', 'CompareTo', 'Equals', 'Format', 'GetHashCode', 'GetName', 'GetNames', 'GetType', 'GetTypeCode', 'GetUnderlyingType', 'GetValues', 'HasFlag', 'IsDefined', 'MemberwiseClone', '没有任何' , 'Parse', 'PredictForImpact', 'ReferenceEquals', 'ToBoolean', 'ToByte', 'ToChar', 'ToDateTime', 'ToDecimal', 'ToDouble', 'ToInt16', 'ToInt32', 'ToInt64', 'ToObject', 'ToSByte', 'ToSingle', 'ToString', 'ToType', 'ToUInt16', 'ToUInt32', 'ToUInt64', 'TryParse', 'UseImpactConstraints', '__and__', '__class__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__invert__', '__le__', '__lt__', '__ne__', '__new__', '__nonzero__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__xor__', 'value__']

编辑:

我刚刚发现了另一个可能发生这种情况的地方,人们可能更常遇到这种情况。Microsoft DialogResult .NET API 模块 属性 ( link System.Windows.Forms ) None 属性,它会产生相同的效果。

帖子版权声明 1、本帖标题:尽管有“禁用”注释,但 Pylint 语法错误仍未得到抑制
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Essex Boy在本站《python-2.7》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 希望有人能帮助我,我已经设法通过 gtk_rc_parse 在我正在构建的应用程序中获得一些屏幕更改和自定义,这很好,但如果我打开应用程序时更改外观设置......

    希望有人能帮助我,我已经设法通过 gtk_rc_parse 在我正在构建的应用程序中获得一些屏幕更改和自定义,这很好,但如果我通过菜单打开应用程序来更改外观设置,它会更改我的所有设置,这很烦人。

    我只是想知道是否有人知道如何做到这一点,这样如果在我的应用程序启动后外观设置发生变化,它不会改变我的应用程序内的任何内容。

    我在 wheezy Linux 安装上使用 python 2,我知道它很旧,但是我前段时间开始使用它,现在才刚刚开始尝试完成它,所以如果没有必要的话,我真的不想花太多时间去学习最新的软件。

    任何帮助都将非常有帮助,谢谢大家。

  • 我无法在我的 excel 工作簿上打印 href 我的代码看起来正常,并且在我的 excel 工作簿上打印标题和日期时它可以工作,但是 href 列不起作用,请帮助我,谢谢。# Intel newsroomdriver.g...

    我无法在我的 excel 工作簿上打印 href 我的代码看起来正常,并且在我的 excel 工作簿上打印标题和日期时它可以工作,但是 href 列不起作用,请帮助我,谢谢。

    # Intel newsroom
    driver.get('https://www.intel.com/content/www/us/en/newsroom/home.html#gs.4bhcva')
    sleep(2)
    
    workbook = openpyxl.load_workbook('test.xlsx')
    sheet = workbook['test']
    mxR = sheet.max_row
    nowrow = mxR + 1  # Start from the next row after existing data
    eles = driver.find_elements(By.CLASS_NAME, 'content-headline')
    for ele in eles[:3]:  # Print the first 3 elements
        title = ele.find_element(By.CLASS_NAME, 'title').text
        href = ele.find_element(By.CLASS_NAME, 'title').get_attribute('href')
        date = ele.find_element(By.CLASS_NAME, 'article-date').text
        
        sheet.cell(row=nowrow, column=1).value = 'Intel newsroom'
        sheet.cell(row=nowrow, column=2).value = title
        sheet.cell(row=nowrow, column=3).value = href
        sheet.cell(row=nowrow, column=4).value = date
        nowrow += 1  # Move to the next row
    
    workbook.save('test.xlsx')
    
    driver.quit()
    
  • 除了使用 eval ,您还可以从字符串中解析枚举

    import clr
    clr.AddReference("System.Windows.Forms")
    from System.Windows.Forms import DialogResult
    
    result = DialogResult.Parse(DialogResult, "None")
    

    或使用 Mechanical 脚本(已在 2024 R1 中测试)

    Cxn.TimeStepControls = ContactTimeStepControls.Parse(ContactTimeStepControls, "None")
    

    再次不理想,但至少它避免了 Pylint 错误。

  • 根本原因: href 属性在 <a> 节点上。但是下面这行代码正在定位 <h3> 节点。

    href = ele.find_element(By.CLASS_NAME, 'title').get_attribute('href')
    

    解决方案: 将上面那行改为:

    href = ele.find_element(By.XPATH, "//*[@class='title']//a").get_attribute('href')
    
  • 语法错误无法禁用,它们表明 pylint 与 Iron Python 不兼容,无法解析您的文件。我使用的是移动设备,因此无法从 github repo 链接 Iron Python 问题,但有一个。

  • 我想用 python 编写一个发送电子邮件的程序,但我在网上找到的所有帖子都是针对 python3 及以上版本的。我找到了一段代码,据说可以在 python 2.7 上运行,但是当我...

    我想用 Python 编写一个发送电子邮件的程序,但我在网上找到的所有帖子都是针对 Python3 及以上版本的。我找到了一段代码,据说可以在 Python 2.7 上运行,但是当我使用我的信息运行脚本时,出现了错误:

    Traceback (most recent call last):
      File "C:\Users\1651176\Desktop\male2.py", line 14, in <module>
        server = smtplib.SMTP_SSL(smtp_server, port, context)
      File "C:\ProgramData\App-V\86864BC8-DA90-464E-91D6-C9116EF05820\825D7C9B-7BA2-4F26-BDCC-55606B8D3CEC\Root\VFS\AppVPackageDrive\Python27\lib\smtplib.py", line 802, in __init__
        SMTP.__init__(self, host, port, local_hostname, timeout)
      File "C:\ProgramData\App-V\86864BC8-DA90-464E-91D6-C9116EF05820\825D7C9B-7BA2-4F26-BDCC-55606B8D3CEC\Root\VFS\AppVPackageDrive\Python27\lib\smtplib.py", line 256, in __init__
        (code, msg) = self.connect(host, port)
      File "C:\ProgramData\App-V\86864BC8-DA90-464E-91D6-C9116EF05820\825D7C9B-7BA2-4F26-BDCC-55606B8D3CEC\Root\VFS\AppVPackageDrive\Python27\lib\smtplib.py", line 317, in connect
        self.sock = self._get_socket(host, port, self.timeout)
      File "C:\ProgramData\App-V\86864BC8-DA90-464E-91D6-C9116EF05820\825D7C9B-7BA2-4F26-BDCC-55606B8D3CEC\Root\VFS\AppVPackageDrive\Python27\lib\smtplib.py", line 808, in _get_socket
        new_socket = ssl.wrap_socket(new_socket, self.keyfile, self.certfile)
      File "C:\ProgramData\App-V\86864BC8-DA90-464E-91D6-C9116EF05820\825D7C9B-7BA2-4F26-BDCC-55606B8D3CEC\Root\VFS\AppVPackageDrive\Python27\lib\ssl.py", line 949, in wrap_socket
        ciphers=ciphers)
      File "C:\ProgramData\App-V\86864BC8-DA90-464E-91D6-C9116EF05820\825D7C9B-7BA2-4F26-BDCC-55606B8D3CEC\Root\VFS\AppVPackageDrive\Python27\lib\ssl.py", line 617, in __init__
        self.do_handshake()
      File "C:\ProgramData\App-V\86864BC8-DA90-464E-91D6-C9116EF05820\825D7C9B-7BA2-4F26-BDCC-55606B8D3CEC\Root\VFS\AppVPackageDrive\Python27\lib\ssl.py", line 846, in do_handshake
        self._sslobj.do_handshake()
    SSLError: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:726)
    

    有没有办法可以阻止此错误的发生?

    我的代码:

    import smtplib
    import ssl
    port = 587
    smtp_server = "smtp.gmail.com"
    sender_email = "[email protected]"  # Enter your address
    receiver_email = "[email protected]"  # Enter receiver address
    password = 'pwrd'
    message = """\
    Subject: Hi there
    
    This message is sent from Python."""
    
    context = ssl.create_default_context()
    server = smtplib.SMTP_SSL(smtp_server, port, context)
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, message)
    server.quit()
    

    另外:我尝试了一些其他代码,当我输入我的信息时,它显示:

    Traceback (most recent call last):
      File "C:\Users\1651176\Desktop\male3o.py", line 13, in <module>
        server.login(username, password)
      File "C:\ProgramData\App-V\86864BC8-DA90-464E-91D6-C9116EF05820\825D7C9B-7BA2-4F26-BDCC-55606B8D3CEC\Root\VFS\AppVPackageDrive\Python27\lib\smtplib.py", line 623, in login
        raise SMTPAuthenticationError(code, resp)
    SMTPAuthenticationError: (534, '5.7.9 Application-specific password required. Learn more at\n5.7.9  https://support.google.com/mail/?p=InvalidSecondFactor t71-20020a37aa4a000000b00741d87eb5d1sm2863856qke.105 - gsmtp')
    

    但是,在 Google 中我已经为 Gmail 生成了密码,并且已经启用了两步验证。,那么错误是什么?

    其他代码:

    import smtplib
    
    fromaddr = '[email protected]' 
    toaddrs  = '[email protected]'  
    msg = 'This message was sent from python.'  
    
    username = 'Username'  
    password = 'pwrd'
    
    server = smtplib.SMTP('smtp.gmail.com', 587)  
    server.ehlo()
    server.starttls()
    server.login(username, password)  
    server.sendmail(fromaddr, toaddrs, msg)  
    server.quit()
    

    谢谢!

  • jla 2月前 0 只看Ta
    引用 8

    这真是令人惊讶和失望。如果您可以提供 Github 上问题的链接,我将不胜感激。有没有可能的解决方法?我想我可以注释掉那一行,修复文件其余部分的问题,然后取消注释。不过,如果您知道的话,我也愿意接受其他选择。

  • 当您说“已经为 Gmail 生成了密码”时,您是指 Google 为非 Google 应用程序提供的作为“应用程序密码”的应用程序专用密码,还是帐户密码?

  • 引用 10

    有点过时:github.com/pylint-dev/astroid/issues/329 但在我看来仍然有用。目前找不到任何特定于 ironpython 的内容,你能创建一个问题吗?

  • 我找到了一个解决方法。请参阅我的答案。由于它依赖于 eval(),因此并不理想,但我认为风险很低,而且好处很大。

  • 引用 12

    如何在新的 cygwin 版本(截至 2023 年)上安装 Python 2.7?python 2 的软件包似乎不可用。只有 Python 3 可用。有几个软件包 python2-### 具有依赖关系

    如何在新版 cygwin(截至 2023 年)上安装 Python 2.7?

    python 2 的软件包似乎不可用。只有 Python 3 可用。

    有几个包 python2-### 具有依赖关系, python2 但没有 python2 包。

  • 在标有其他代码的代码上,尝试

    import smtplib
    from email.mime.text import MIMEText
    
    
    fromaddr = '[email protected]' 
    toaddrs  = '[email protected]'  
    body = 'This message was sent from python.'  
    
    msg = MIMEText(body)
    msg['From'] = fromaddr
    msg['To'] = toaddrs
    
    username = 'Username'  
    password = 'Password'
    
    server = smtplib.SMTP('smtp.gmail.com', 587)  
    server.ehlo()
    server.starttls()
    server.login(username, password)  
    server.sendmail(fromaddr, [toaddrs], msg.as_string())
    server.close()
    

    同样,要 password 使用应用程序密码, username 请使用普通电子邮件。

  • 我找到了一种解决方法 eval()

    前:

    Code with Syntax Error

    后:

    Code without Syntax Error

    显然,使用 eval() 会使这种情况不太理想。但由于文本不是动态生成的,因此风险很低,并且能够让 Pylint 评估整个代码的好处远远超过了需要使用 eval() .

  • 除非你有非常特殊的要求,否则你应该远离 Python 2。该语言当前推荐和支持的版本是 Python 3。

  • @tripleee 你说得完全正确。我们一直在使用 Python 3。但我们也有很多脚本在 Python 2 上运行,我们还不能重构它们。

  • Ming 2月前 0 只看Ta
    引用 17

    您可以安装适用于 Python 2.7 的本机 Windows 版本并编写一些脚本或函数作为它的前端,执行命令行参数的必要转换(例如将 Cygwin 路径转换为 ​​Windows 路径)。

  • LA_ 2月前 0 只看Ta
    引用 18

    我的程序是一个计时器。它包含一个标签、一个条目和一个按钮。当用户输入时间并点击按钮时,我希望窗口移动到右上角。为此,我使用这个命令...

    我的程序是一个计时器。它包含一个标签、一个条目和一个按钮。当用户输入时间并点击按钮时,我希望窗口移动到右上角。为此,我使用以下命令:

    root.geometry("500x100")
    root.geometry("+{}+0".format(root.winfo_screenwidth()-500))
    

    但它不能正常工作。我得到这个位置: 在此处输入图片描述

    但是当我使用一半的宽度将其放置在右上角时

    root.geometry("500x100")
    root.geometry("+{}+0".format(root.winfo_screenwidth()-250))
    

    它工作正常。 在此处输入图像描述 这意味着坐标原点位于窗口的中间。

    如何将坐标原点的位置改为左上角?

    以下是该程序的完整代码:

    import customtkinter as ctk
    import time
    
    def click_but():
        TimeEntry.pack_forget()
        StartButton.pack_forget()
        hours = int(TimeEntry.get()[:2])
        minutes = int(TimeEntry.get()[3:5])
        seconds = int(TimeEntry.get()[6:])
        root.overrideredirect(True)
        root.geometry("500x100")
        root.geometry("+{}+0".format(root.winfo_screenwidth()-250))
        while hours >= 0 and minutes >= 0 and seconds >= 0:
            TimeLabel.configure(text=(str(hours) if hours >= 10 else ('0' + str(hours))) + ':' + (str(minutes) if minutes >= 10 else ('0' + str(minutes))) + ':' + (str(seconds) if seconds >= 10 else ('0' + str(seconds))))
            TimeLabel.update()
            seconds -= 1
            if seconds < 0:
                seconds = 59
                minutes -= 1
                if minutes < 0:
                    minutes = 59
                    hours -= 1
                    if hours < 0:
                        break
            time.sleep(1)
    
        root.geometry("500x250")
        TimeEntry.pack(side='top')
        StartButton.pack(side='top', pady = 10)
        root.overrideredirect(False)
    
    
    root = ctk.CTk()
    root.geometry("500x250")
    
    
    TimeLabel = ctk.CTkLabel(master=root, text='00:00:00', font=('Segue UI', 100))
    TimeLabel.pack(side='top')
    TimeEntry = ctk.CTkEntry(master=root, font=('Segue UI', 50), width = 300, justify = "center")
    TimeEntry.pack(side='top')
    StartButton = ctk.CTkButton(master=root, text='Start', command=click_but, font=('Segue UI', 50))
    StartButton.pack(side='top', pady = 10)
    
    root.mainloop()
    
  • 我想让窗口移动到右上角。

    您可以使用 - 代替 来 + 获取相对于屏幕右侧和底部的位置。右上角指定为 "-0+0" .

    geometry tcl/tk 文档中找到 wm 命令 的完整接受定义 .

  • 我在使用 VS Code 时遇到问题:Linux:无法启动 Python 进程,请验证路径“python”我尝试更改 settings.json 和 launch.json 文件,但没有任何效果,我已经

    我在使用 VS Code 时遇到一个问题:

    Linux: Failed to launch the Python Process, please validate the path 'python'
    

    我试图更改 settings.json launch.json 文件,但没有任何反应,我已经安装了 Preview Python,这个错误就是从这里来的,但我不知道如何修复它。

    当我保持点击它时:

    "python.pythonPath": "/usr/local/bin/python3"
    

    它告诉我: unknown configuration settings: no quick fixes available

返回
作者最近主题: