有没有办法排除模块的导入部分,然后用sphinx-python记录它?我有一个模块导入另一个包(其他不同的项目),然后sphinx给出了这个错误:
“”“”文件“/usr/local/lib/python2.7/dist-packages/Sphinx-1.1.3-py2.7.egg/sphinx/ext/autodoc.py”,第321行,在import_object导入中(self .modname)文件“/home/x/GitHub/project/mod_example1.py”,第33行,来自other_pck import Klass,KlassStuff ImportError:没有名为other_pck的模块“”“
如果我在模块中注释调用/导入该包的导入部分,那么sphinx可以执行autodoc . 我尝试了所有的sphinx autodoc模块:autoclass,automodule等...但是一旦尝试导入其他软件包,结果总是一样的 .
谢谢
1 回答
你正在以错误的方式解决问题 . 解决问题的正确方法是让Sphinx将您现有的其他软件包识别为autodoc功能 must 导入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/
*)理论上你可以,但这超出了斯芬克斯和这个问题的范围