Windows Python:sphinx-build.exe文件;“消失”;
问题是“为什么Sphinx不能在Windows中工作?”或者“为什么Sphinx-build.exe在正确安装后丢失?” 我有一个答案,在这里 我们使用Sphinx生成Python文档。它在Linux中工作正常,但昨天它在Windows中停止了工作。我见过关于“sphinx build.exe”是一个丢失文件的错误报告 我今天在Windows系统上找到了问题的根源。问题的症候是,一个可执行文件“sphinx build.exe”在生成失败后从文件系统中消失 我已经重复了好几次这个循环。如果我在虚拟环境中,也会发生同样的情况 以下是删除并重新安装Sphinx后的脚本目录: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”在生成失败后从文件系统中消失 我已经重复了好几次这个循环。如果我在虚
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