警告:<module>不是sys.path </module>上的有效模块名

时间:2013-07-16 20:49:43

标签: python ipython python-module

我有以下结构:

my_program/
    main.py
    packages/
        __init.py__
        my_package/
           __init__.py
            foo.py
        my_other_package/
           __init__.py
            my_other_module.py

在IPython中,当我进入my_program/packages/my_package并输入:

run -m foo.py

我收到警告:

WARNING: u'foo.py'is not a valid modulename on sys.path

我的问题是为什么?

看看execution.py IPython魔术,我看到了:

if "m" in opts:
            modulename = opts["m"][0]
            modpath = find_mod(modulename)
            if modpath is None:
                warn('%r is not a valid modulename on sys.path'%modulename)
                return
            arg_lst = [modpath] + arg_lst

但我不确定我理解为什么他们在modpath None时有if语句。

Herefind_mod的规范:

enter image description here

更新

如果我尝试run -m foo(即我放弃.py扩展名),我会得到以下内容:

ValueError: Attempted relative import in non-package

错误发生在foo.py中的这一行:

from ..my_other_package import my_other_module

1 个答案:

答案 0 :(得分:0)

只是在玩游戏时,尝试run -m foo