有什么方法可以排除模块的导入部分,然后用sphinx-python记录它? 我有一个模块导入另一个包(其他不同的项目),然后sphinx给出了这个错误:
“”” 在import_object中输入文件“/usr/local/lib/python2.7/dist-packages/Sphinx-1.1.3-py2.7.egg/sphinx/ext/autodoc.py”,第321行 导入(self.modname) 文件“/home/x/GitHub/project/mod_example1.py”,第33行,in 来自other_pck导入Klass,KlassStuff ImportError:没有名为other_pck的模块 “”“
如果我评论调用/导入该软件包的模块中的导入部分,那么sphinx可以执行autodoc。 我尝试使用所有sphinx autodoc模块:autoclass,automodule等...但是一旦尝试导入其他软件包,结果总是一样的。
由于
答案 0 :(得分:2)
你正在以错误的方式解决问题。解决问题的正确方法是让Sphinx了解您现有的其他软件包,因为autodoc功能必须导入Python软件包才能扫描源代码。如果没有解决所有依赖关系,就无法导入Python包,也无法从中挑选出源代码行,因为这就是Python的构建方式(*)
可能的解决方案
创建一个Python virtualenv环境,其中包含Sphinx和其他软件包,以便他们可以看到彼此http://opensourcehacker.com/2012/09/16/recommended-way-for-sudo-free-installation-of-python-software-with-virtualenv/
在Sphinx配置文件中设置PYTHONPATH环境变量或编辑sys.path,以便在运行Sphinx时在导入列表中添加缺少的包http://scienceoss.com/minimal-sphinx-setup-for-autodocumenting-python-modules/
*)理论上你可以,但这超出了Sphinx和这个问题的范围