【问题标题】:Python Snakefood module import generalized failurePython Snakefood 模块导入普遍失败
【发布时间】:2015-03-07 01:40:46
【问题描述】:

我想运行 snakefood(一个基于 AST 的依赖图分析器;源代码可以在 here 找到)。我的项目有一个涉及多个级别的 Python 包的结构,如下所示:

myproject
 |code
  |Utils
   |AdaptedConfigParser
    Configs_Parser.py
    ...
 ...
 main.py

但是,当我开始在我的项目的根目录上运行蛇食时,它声称它无法从我正在导入的 Python 包中找到模块:

$ sfood --internal --follow --ignore-unused ./PycharmProjects/myproject/ > ~/static_analysis.txt
WARNING     :     Line 9: Could not import module 'myproject.Utils.AdaptedConfigParser.Configs_parser'

我试图通过将带有项目根目录的.pth 文件添加到lib/python2.7/site-packages 来解决它

现在,当我在从任何地方激活该虚拟环境的情况下调用 python 时,我可以执行以下操作:

$ python
Python 2.7.6rc1 (default, Jan 19 2014, 18:57:40) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import myproject.Utils.AdaptedConfigParser.Configs_parser
>>>

而且效果很好。

但是,当使用该虚拟环境启动蛇食时,它仍然返回相同的错误。

$ sfood --internal --follow --ignore-unused ./PycharmProjects/myproject/ > ~/static_analysis.txt
WARNING     :     Line 9: Could not import module 'myproject.Utils.AdaptedConfigParser.Configs_parser'

此时我什至不明白导入问题可能来自哪里。

除此之外,当 --internal 标志被拿走时,它甚至无法导入 python builtin 模块,这对我来说没有任何意义:

WARNING     :     Line 80: Could not import module 'builtins'
WARNING     :     Line 190: Could not import module 'pyamg'

以前有人遇到过这样的问题吗?如果是,有没有办法绕过它?

【问题讨论】:

    标签: python python-2.7 python-import pythonpath


    【解决方案1】:

    我有类似的问题,原来我的案例中的警告是由于__all__ 声明而产生的。

    例如

    __all__ = ['abc',
               'aaa',
               ...
              ]
    

    上面的代码给出了警告:

    WARNING     :     Line xx: Could not import module 'abc'
    WARNING     :     Line xx: Could not import module 'aaa'
    

    我修改了snakefood\lib\python\find.py 中的警告常量ERROR_IMPORT 以添加发生错误的文件的名称以及行号和模块名称。这样您就可以针对特定文件和行号几乎找出问题所在。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2013-12-03
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多