You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本PyCharm运行正常但命令行执行报错原因及解决方法

问题原因

核心问题是两个运行环境的Python解释器版本不匹配:

  • PyCharm里配置的项目解释器是Python 3.x,Python 3中所有类默认都是新式类,支持自定义__new__方法实现实例构造逻辑,所以脚本可以正常运行。
  • Linux终端下输入python默认调用的是Python 2.x解释器。Python 2的规则里,如果类没有显式继承object,就会被识别为旧式类(经典类),旧式类不支持自定义__new__的构造逻辑,实例化时传入参数就会抛出TypeError: this constructor takes no arguments的报错。直接执行./py.py时报错同理,说明脚本首行没有指定解释器、或者指定的解释器也是Python 2版本。
修复方案

二选一即可:

  • 兼容写法:给类显式声明继承object,让它在Python2环境下也能被识别为新式类,仅修改类定义行即可,其余代码保持不变:
    class EncodeKey(object):
        def __new__(cls, *args):
            if len(args) == 1:
                return cls.generate_encode_key(args[0].upper())
            return cls.get_encode_key(args)
    
  • 统一解释器版本:让终端运行时和PyCharm一样使用Python3
    • 临时运行时显式指定命令:python3 py.py
    • 如果要支持直接./py.py执行,在脚本的最顶部第一行添加shebang声明:
      #!/usr/bin/env python3
      
      保存后即可直接执行,系统会自动调用Python3解释器运行脚本,和PyCharm环境保持一致。

内容的提问来源于stack exchange,提问作者curioushuman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 12:54:26