【问题标题】:module not found when python script run from command line从命令行运行python脚本时找不到模块
【发布时间】:2019-10-30 23:58:56
【问题描述】:

ISO8583.pyISO8583Errors.py 都位于 ISO8583_payment 文件夹内。另外,我在ISO8583_Payment 文件夹中创建了虚拟__init.py__。从命令行运行 ISO8583.py 时,它会抛出一个错误。但是当我从 pyCharm IDE 运行时它可以工作。

ISO8583.py

import sys
sys.path.append("/ISO8583_Payment")
from ISO8583_Payment.ISOErrors import InvalidBitType,InvalidMTI,InvalidValueType,InvalidIso8583,ValueToLarge,BitInexistent,BitNotSet
''' I did not copy all the source code in here ''''

def ParseRawMessage(ISO8583TextFile):
    with open(ISO8583TextFile, 'rb') as in_file:
        contents = in_file.read()
        hex_bytes = binascii.hexlify(contents)
        IsoStr = hex_bytes.decode("ascii")
        Iso8583 = ISO8583()
        try:
            Iso8583.setIsoContent(IsoStr)
        except InvalidMTI as error:
            print("{0}".format(error))
        except InvalidBitType as error:
            print("{0}".format(error))
        except ValueToLarge as error:
            print("{0}".format(error))
        except InvalidValueType as error:
            print("{0}".format(error))
        except BitInexistent as error:
            print("{0}".format(error))
        except BitNotSet as error:
            print("{0}".format(error))
        except InvalidIso8583 as error:
            print("{0}".format(error))
        bitsAndValuesDictionary = Iso8583.getBitsAndValues()
        for v in bitsAndValuesDictionary:
            print('%s (BIT-%s) = %s' % (v['name'], v['bit'], v['value']))


if __name__ == '__main__':
    ParseRawMessage(sys.argv[1])

ISOErrors.py

class ValueToLarge(Exception):

    def __init__(self, value):
        self.str = value
    def __str__(self):
        return repr(self.str)

class BitInexistent(Exception):

    def __init__(self, value):
        self.str = value
    def __str__(self):
        return repr(self.str)       


class InvalidValueType(Exception):

    def __init__(self, value):
        self.str = value
    def __str__(self):
        return repr(self.str)       


class InvalidBitType(Exception):

    def __init__(self, value):
        self.str = value
    def __str__(self):
        return repr(self.str)       


class InvalidIso8583(Exception):

    def __init__(self, value):
        self.str = value
    def __str__(self):
        return repr(self.str)           


class InvalidMTI(Exception):

    def __init__(self, value):
        self.str = value
    def __str__(self):
        return repr(self.str)       

#Exception that indicate that bit is not there.
class BitNotSet(Exception):

    def __init__(self, value):
        self.str = value
    def __str__(self):
        return repr(

当我从命令提示符运行时,出现以下错误。

C:\Projects\ATR220TA_Work_On_Progress\ISO8583_Payment>python C:\Projects\ATR220TA_Work_On_Progress\ISO8583_Payment
C:\Users\gobiraaj.anandavel\AppData\Local\Programs\Python\Python37-32\python.exe: can't find '__main__' module in 'C:\\Projects\\ATR220TA_Work_On_Progress\\ISO8583_Payment'

【问题讨论】:

    标签: python module package


    【解决方案1】:

    尝试以下操作:

    import os
    import sys
    
    sys.path.append(os.path.realpath(os.path.dirname(os.path.dirname(__file__))))
    

    文件名是ISO8583Errors.py还是ISOErrors.py

    这取决于你必须使用

    from ISO8583_Payment.ISO8583Errors import ...
    

    from ISO8583_Payment.ISOErrors import ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 2014-03-18
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      相关资源
      最近更新 更多