Windows Python:sphinx-build.exe文件;“消失”;

Windows Python:sphinx-build.exe文件;“消失”;,python,windows,makefile,python-sphinx,Python,Windows,Makefile,Python Sphinx,问题是“为什么Sphinx不能在Windows中工作?”或者“为什么Sphinx-build.exe在正确安装后丢失?” 我有一个答案,在这里 我们使用Sphinx生成Python文档。它在Linux中工作正常,但昨天它在Windows中停止了工作。我见过关于“sphinx build.exe”是一个丢失文件的错误报告 我今天在Windows系统上找到了问题的根源。问题的症候是,一个可执行文件“sphinx build.exe”在生成失败后从文件系统中消失 我已经重复了好几次这个循环。如果我在虚

问题是“为什么Sphinx不能在Windows中工作?”或者“为什么Sphinx-build.exe在正确安装后丢失?”

我有一个答案,在这里

我们使用Sphinx生成Python文档。它在Linux中工作正常,但昨天它在Windows中停止了工作。我见过关于“sphinx build.exe”是一个丢失文件的错误报告

我今天在Windows系统上找到了问题的根源。问题的症候是,一个可执行文件“sphinx build.exe”在生成失败后从文件系统中消失

我已经重复了好几次这个循环。如果我在虚拟环境中,也会发生同样的情况

以下是删除并重新安装Sphinx后的脚本目录:

    Directory: C:\Users\PJPJPJ\apps\python38\Scripts


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        3/10/2021  12:40 PM         106348 sphinx-apidoc.exe
-a----        3/10/2021  12:40 PM         106362 sphinx-autogen.exe
-a----        3/10/2021  12:40 PM         106347 sphinx-build.exe
-a----        3/10/2021  12:40 PM         106352 sphinx-quickstart.exe
尝试运行sphinx生成失败:

PS C:\Users\PJPJPJ\GIT\HRB\ml_ita\ml_ita\packages\ita\docs> make html
sh: /c/Users/PJPJPJ/apps/python38/Scripts/sphinx-build: Permission denied
make: *** [Makefile:20: html] Error 126
PS C:\Users\PJPJPJ\GIT\HRB\ml_ita\ml_ita\packages\ita\docs>
之后,列表显示该文件已消失:

PS C:\Users\PJPJPJ\apps\python38> ls .\Scripts\sphinx*


    Directory: C:\Users\PJPJPJ\apps\python38\Scripts


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        3/10/2021  12:40 PM         106348 sphinx-apidoc.exe
-a----        3/10/2021  12:40 PM         106362 sphinx-autogen.exe
-a----        3/10/2021  12:40 PM         106352 sphinx-quickstart.exe
我一次又一次地这么做,觉得自己快要发疯了。第八次,我注意到右下角出现了一个警告。这就是原因。“Crowdstrike检测到恶意软件”。这个东西突然出现并消失得如此之快,我无法复制整个消息来向您展示整个事情


啊。企业防病毒控制。

安装sphinx Python包后,您有两个选项来执行它

  • 执行
    sphinx build.exe
  • 或者执行
    python-msphinx

因此,在您确切了解删除前者的内容之前,您可以尝试使用后者作为替代方法。

要清楚了解我们正在谈论的内容,请查看相关文件/目录列表(仅列出与手头案例相关的文件)

C:\>到您的虚拟机或安装的树路径
C:\PATH\u到您的\u VENV\u或\u安装
├───包括
├───解放党
│   └───网站包
│              └───斯芬克斯
│                  ├──__主管道
│                  ├───指令
│                  │     ├──build.py
│                  │     └──quickstart.py
│                  └───提取
│                        └──apidoc.py
└───剧本
├──激活蝙蝠
├──sphinx-apidoc.exe
├──sphinx-build.exe
└──sphinx-quickstart.exe
现在,可执行文件
.exe
文件(您的反病毒程序正在删除)基本上映射到相应的
.py
模块(以上所有功能)。这些工具相当于setuptools,您可以在中看到它的实现

调用
python-msphinx
的解决方案对应于以下内容:

1.1.1。接口选项

还允许使用包名(包括命名空间包)。当提供包名而不是普通模块时,解释器将作为主模块执行

实际上,通过调用
python-msphinx
您正在执行sphinx包,就像它是一个模块一样,如果您在命令行上没有任何参数的情况下进行调用,则可以验证这一点,结果将是:

用法:_uumain_uuu.py[OPTIONS]SOURCEDIR OUTPUTDIR[filename…] __main.py:错误:需要以下参数:sourcedir、outputdir、filename

因此,让我们来看看上面的特色
\uuuuuuu main\uuuuuuuuuy.py
文件的内容:

导入系统 从sphinx.cmd.build导入main 系统出口(主(系统argv[1:])) 这就是为什么我要写一个更广泛的答案(也是为了将来的读者),因为如果您的反病毒软件决定同时删除
sphinx apidoc.exe
sphinx quickstart.exe
,简单地使用
python-m sphinx
将无法解决这些进一步的问题

最后,当您运行
makehtml
时,您正在执行使用
sphinx quickstart
生成的makefile。如果您的项目具有通常的文件/目录布局(),它将如下所示:

C:\Your\u项目
├───文件
│    ├──建造
│    ├──来源
│    ├──制造蝙蝠
│    └──生成文件
│
├───src
(...)
在我们结束解释之前,让我们包括上面
makefile
的4行相关内容,以清楚地了解正在发生的事情:

SPHINXOPTS=
斯芬克斯建筑?=斯芬克斯建筑
SOURCEDIR=源
BUILDDIR=build
两个目录
SOURCEDIR
BUILDDIR
对应于上述的
build
source
目录。调用
makefile
运行
makehtml
时发生的情况是使用以下签名(来自文档)调用
sphinx build

概要

sphinx构建[选项][文件名…]

可能的解决办法:

解决方案1。您可以将对应于
SPHINXBUILD?=sphinx build
的行更改为
SPHINXBUILD?=python-m sphinx
它将起作用,并且您将作为模块执行sphinx包(如
\u main\uuuuuuuuuuu.py
文件所示)

但是如果您的防病毒软件决定删除剩余的可执行文件
.exe
文件(并且您还想执行这些文件),那么这并不能解决(也不能解决)潜在的问题除了,还有许多场景需要避免完全使用makefile,因此给出完整的解释可以解决所有这些场景

解决方案2。您可以直接使用Sphinx构建,而无需可执行文件或makefile

调用
makehtml
时,通常在包含makefile的路径上执行(在上面的示例中,您可以从
/docs
目录调用它)。因此,让我们考虑2个可能的路径,在不使用MaFix::/P>时从哪里调用。
  • /docs
    目录调用。您可以传递
    sou