python-2.7 - ctypes 的模拟导入失败,阅读文档时操作数不受支持

标签 python-2.7 read-the-docs

我有依赖于 ctypes 核心模块的小型 Windows 模块。在项目 RTD 网站上,该模块的页面是空的。查看最新的几乎成功的构建日志https://readthedocs.org/builds/apt/2900858/ make html 阶段失败。

  File "/var/build/user_builds/apt/checkouts/latest/knownpaths.py", line 5, in <module>
    from ctypes import windll, wintypes
  File "/usr/lib/python2.7/ctypes/wintypes.py", line 23, in <module>
    class VARIANT_BOOL(_SimpleCData):
ValueError: _type_ 'v' not supported

在常见问题条目之后 https://read-the-docs.readthedocs.org/en/latest/faq.html#i-get-import-errors-on-libraries-that-depend-on-c-modules我尝试使用 mock 伪造 import ctypes,但这样做会导致构建完全失败。据我所知,但我并不是这方面的专家,这是因为 mock 本身缺少一些数学函数:

  File "/var/build/user_builds/apt/checkouts/latest/knownpaths.py", line 13, in GUID
    ("Data4", wintypes.BYTE * 8)
TypeError: unsupported operand type(s) for *: 'Mock' and 'int'

对错误的研究导致只有 3 次搜索命中,最相关的 Mock 缺少(至少)真正的除法运算符:https://mail.python.org/pipermail/python-bugs-list/2014-March/235709.html

我走的路对吗? ctypes 可以用在 RTD 上的项目中吗,我只需要坚持,还是我需要放弃,只使用本地机器上的 sphinx?

这是来自 my conf.py 的当前模拟 block :

try:
    #py3 import
    from unittest.mock import MagicMock
except ImportError:
    #py27 import
    from mock import Mock as MagicMock

class Mock(MagicMock):
    @classmethod
    def __getattr__(cls, name):
        return Mock()

MOCK_MODULES = ['ctypes']
sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)

//这是来自 https://github.com/rtfd/readthedocs.org/issues/1342 的交叉帖子.一周后回复为零,所以我正在寻找更远的地方。//

最佳答案

最初我认为是 ctypes 本身需要被模拟,但是 事实证明我需要在离家更近的地方工作并模拟模块 调用 ctypes,而不是 ctypes 本身

- MOCK_MODULES = ['ctypes']
+ MOCK_MODULES = ['knownpaths']

感谢@Dunes,我认为他的评论偏离轨道并且不会提供帮助。然而,这足以让我的思想和调查路径发生转变,最终让我来到了正确的地方。并不是所有的教义在第一次引起人们注意时都像教义。 ;-)

关于python-2.7 - ctypes 的模拟导入失败,阅读文档时操作数不受支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30950870/

相关文章:

python-sphinx - 有选择地禁用 readthedocs 语法突出显示

python-sphinx - 使用 Read The Docs & Sphinx 和 ReadTheDocs 主题时删除查看源链接

svn - readthedocs 中自动生成的索引文件

python - 我怎样才能让 readthedocs.org build 忽略我的 requirement.txt?

python - 无法在 Ubuntu 上使用 pip 安装 Rodeo

Python Selenium 等待 innerHTML

python - 如何在Python中按空格分割字符串并将特殊字符视为单独的单词?

python - 阅读文档构建失败,出现 "cannot import name ' PackageFinder' from 'pip._internal.index' ”

python - 使用Python获取字符的unicode代码点

json - Unicode解码错误: 'utf8' codec can't decode byte 0x80 in position 3131: invalid start byte