zoukankan      html  css  js  c++  java
  • 【Pycharm学习】pycharm2016.2.X中出现“Parent module ‘YOUR_MODULE_HERE’ not found while handling absolute import ”解决方法

    调试环境:
    系统:window7 64 

    软件:pycharm

    版本:2016.2.3

    在使用本版本的pycharm时,进行unittest的时候,出现如下提示的错误提示:

    RuntimeWarning: Parent module ‘YOUR_MODULE_HERE’ not found while handling absolute import

    其实这是pycharm2016.2.X的一个Bug,在pycharm2017中已经修复。如何继续在pycharm2016.2.X正常试用呢??

    解决方法:

    使用旧的utrunner.py文件替换当前版本,文件路径为…/PyCharm.app/Contents/helpers/pycharm/utrunner.py(macos平台)

    或者…JetBrainsPyCharm 2016.2.2helperspycharmutrunner.py(windows平台)

    utrunner.py的内容如下(替换文件前请先做好备份):

    import sys
    import imp
    import os
    import fnmatch

    helpers_dir = os.getenv("PYCHARM_HELPERS_DIR", sys.path[0])
    if sys.path[0] != helpers_dir:
    sys.path.insert(0, helpers_dir)

    from tcunittest import TeamcityTestRunner
    from nose_helper import TestLoader, ContextSuite
    from pycharm_run_utils import import_system_module
    from pycharm_run_utils import adjust_sys_path
    from pycharm_run_utils import debug, getModuleName, PYTHON_VERSION_MAJOR

    adjust_sys_path()

    os = import_system_module("os")
    re = import_system_module("re")

    modules = {}

    def loadSource(fileName):
    baseName = os.path.basename(fileName)
    moduleName = os.path.splitext(baseName)[0]

    # for users wanted to run unittests under django
    #because of django took advantage of module name
    settings_file = os.getenv('DJANGO_SETTINGS_MODULE')
    if settings_file and moduleName == "models":
    baseName = os.path.realpath(fileName)
    moduleName = ".".join((baseName.split(os.sep)[-2], "models"))

    if moduleName in modules and len(sys.argv[1:-1]) == 1: # add unique number to prevent name collisions
    cnt = 2
    prefix = moduleName
    while getModuleName(prefix, cnt) in modules:
    cnt += 1
    moduleName = getModuleName(prefix, cnt)
    debug("/ Loading " + fileName + " as " + moduleName)
    if os.path.isdir(fileName):
    fileName = fileName + os.path.sep
    module = imp.load_source(moduleName, fileName)
    modules[moduleName] = module
    return module

    def walkModules(modulesAndPattern, dirname, names):
    modules = modulesAndPattern[0]
    pattern = modulesAndPattern[1]
    # fnmatch converts glob to regexp
    prog_list = [re.compile(fnmatch.translate(pat.strip())) for pat in pattern.split(',')]
    for name in names:
    for prog in prog_list:
    if name.endswith(".py") and prog.match(name):
    modules.append(loadSource(os.path.join(dirname, name)))


    # For default pattern see https://docs.python.org/2/library/unittest.html#test-discovery
    def loadModulesFromFolderRec(folder, pattern="test*.py"):
    modules = []
    # fnmatch converts glob to regexp
    prog_list = [re.compile(fnmatch.translate(pat.strip())) for pat in pattern.split(',')]
    for root, dirs, files in os.walk(folder):
    files = [f for f in files if not f[0] == '.']
    dirs[:] = [d for d in dirs if not d[0] == '.']
    for name in files:
    for prog in prog_list:
    if name.endswith(".py") and prog.match(name):
    modules.append(loadSource(os.path.join(root, name)))
    return modules

    testLoader = TestLoader()
    all = ContextSuite()
    pure_unittest = False

    def setLoader(module):
    global testLoader, all
    try:
    module.__getattribute__('unittest2')
    import unittest2

    testLoader = unittest2.TestLoader()
    all = unittest2.TestSuite()
    except:
    pass

    if __name__ == "__main__":
    arg = sys.argv[-1]
    if arg == "true":
    import unittest

    testLoader = unittest.TestLoader()
    all = unittest.TestSuite()
    pure_unittest = True

    if len(sys.argv) == 2: # If folder not provided, we need pretend folder is current
    sys.argv.insert(1, ".")

    options = {}
    for arg in sys.argv[1:-1]:
    arg = arg.strip()
    if len(arg) == 0:
    continue

    if arg.startswith("--"):
    options[arg[2:]] = True
    continue

    a = arg.split("::")
    if len(a) == 1:
    # From module or folder
    a_splitted = a[0].split("_args_separator_") # ";" can't be used with bash, so we use "_args_separator_"
    if len(a_splitted) != 1:
    # means we have pattern to match against
    if os.path.isdir(a_splitted[0]):
    debug("/ from folder " + a_splitted[0] + ". Use pattern: " + a_splitted[1])
    modules = loadModulesFromFolderRec(a_splitted[0], a_splitted[1])
    else:
    if os.path.isdir(a[0]):
    debug("/ from folder " + a[0])
    modules = loadModulesFromFolderRec(a[0])
    else:
    debug("/ from module " + a[0])
    modules = [loadSource(a[0])]

    for module in modules:
    all.addTests(testLoader.loadTestsFromModule(module))

    elif len(a) == 2:
    # From testcase
    debug("/ from testcase " + a[1] + " in " + a[0])
    module = loadSource(a[0])
    setLoader(module)

    if pure_unittest:
    all.addTests(testLoader.loadTestsFromTestCase(getattr(module, a[1])))
    else:
    all.addTests(testLoader.loadTestsFromTestClass(getattr(module, a[1])),
    getattr(module, a[1]))
    else:
    # From method in class or from function
    debug("/ from method " + a[2] + " in testcase " + a[1] + " in " + a[0])
    module = loadSource(a[0])
    setLoader(module)

    if a[1] == "":
    # test function, not method
    all.addTest(testLoader.makeTest(getattr(module, a[2])))
    else:
    testCaseClass = getattr(module, a[1])
    try:
    all.addTest(testCaseClass(a[2]))
    except:
    # class is not a testcase inheritor
    all.addTest(
    testLoader.makeTest(getattr(testCaseClass, a[2]), testCaseClass))

    debug("/ Loaded " + str(all.countTestCases()) + " tests")
    TeamcityTestRunner().run(all, **options)

    也可到小编的百度网盘进行下载:
    链接: https://pan.baidu.com/s/1hr4sOb6 密码: fyut
    ————————————————
    版权声明:本文为CSDN博主「zhusongziye」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zhusongziye/article/details/77635423

    作者:gtea 博客地址:https://www.cnblogs.com/gtea
  • 相关阅读:
    思念
    空白
    curl json string with variable All In One
    virtual scroll list All In One
    corejs & RegExp error All In One
    socket.io All In One
    vue camelCase vs PascalCase vs kebabcase All In One
    element ui 表单校验,非必填字段校验 All In One
    github 定时任务 UTC 时间不准确 bug All In One
    input range & color picker All In One
  • 原文地址:https://www.cnblogs.com/gtea/p/13219066.html
Copyright © 2011-2022 走看看