【问题标题】:WARNING: <module> is not a valid modulename on sys.path警告:<module> 不是 sys.path 上的有效模块名
【发布时间】:2013-07-16 20:49:42
【问题描述】:

我有以下结构:

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

在 IPython 中,当我 cd 进入 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 语句。

Here 是find_mod 的规范:

更新:

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

ValueError: Attempted relative import in non-package

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

from ..my_other_package import my_other_module

【问题讨论】:

    标签: python ipython python-module


    【解决方案1】:

    刚开始玩,尝试做run -m foo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2021-10-06
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      相关资源
      最近更新 更多