在Windows上删除并重新安装PythonSphinx

2024-04-27 07:59:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python(3.8)和Sphinx(3.3.1)来构建HTML文档。但是,sphinx-build命令给了我以下错误:

C:\Users\Me\Dropbox\Kuchen>sphinx-build -b html source build
Running Sphinx v3.3.1
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 1 source files that are out of date
updating environment: 0 added, 1 changed, 0 removed
reading sources... [100%] kaesekuchen
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [100%] kaesekuchen
generating indices... genindex done
writing additional pages... search done
copying static files... WARNING: Failed to copy a file in html_static_file: c:\users\me\appdata\local\programs\python\python38\lib\site-packages\sphinx\themes\basic\static/jquery-3.5.1.js: PermissionError(13, 'Permission denied')
WARNING: Failed to copy a file in html_static_file: c:\users\me\appdata\local\programs\python\python38\lib\site-packages\sphinx\themes\basic\static/jquery.js: PermissionError(13, 'Permission denied')
done
copying extra files... done
dumping search index in English (code: en)... done
dumping object inventory... done
build succeeded, 2 warnings.

但是,

  1. build中的HTML文件kaesekuchen未更新/更改
  2. 文件夹c:\users\me\appdata\local\programs\python\python38\lib\site-packages\sphinx不存在

后者是我的错,因为我在文件资源管理器中删除了它,但只是因为我以前遇到了完全相同的错误,希望删除并重新安装Sphinx可以解决这个问题

相反,命令pip uninstall sphinx和随后的pip install -U sphinx不会更改该文件夹中的任何内容,后者仅提供以下乐观输出,尽管有以下输出:

Microsoft Windows [Version 10.0.18363.1198]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\me>pip uninstall sphinx
Found existing installation: Sphinx 3.3.1
Uninstalling Sphinx-3.3.1:
  Would remove:
    c:\users\me\appdata\local\programs\python\python38\lib\site-packages\sphinx-3.3.1.dist-info\*
    c:\users\me\appdata\local\programs\python\python38\lib\site-packages\sphinx\*
    c:\users\me\appdata\local\programs\python\python38\scripts\sphinx-apidoc.exe
    c:\users\me\appdata\local\programs\python\python38\scripts\sphinx-autogen.exe
    c:\users\me\appdata\local\programs\python\python38\scripts\sphinx-build.exe
    c:\users\me\appdata\local\programs\python\python38\scripts\sphinx-quickstart.exe
Proceed (y/n)? y
  Successfully uninstalled Sphinx-3.3.1

C:\Users\me>pip install -U sphinx
Collecting sphinx
  Using cached Sphinx-3.3.1-py3-none-any.whl (2.9 MB)
Requirement already satisfied, skipping upgrade: docutils>=0.12 in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (0.16)
Requirement already satisfied, skipping upgrade: sphinxcontrib-serializinghtml in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (1.1.4)
Requirement already satisfied, skipping upgrade: snowballstemmer>=1.1 in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (2.0.0)
Requirement already satisfied, skipping upgrade: alabaster<0.8,>=0.7 in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (0.7.12)
Requirement already satisfied, skipping upgrade: setuptools in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (41.2.0)
Requirement already satisfied, skipping upgrade: colorama>=0.3.5; sys_platform == "win32" in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (0.4.4)
Requirement already satisfied, skipping upgrade: sphinxcontrib-jsmath in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (1.0.1)
Requirement already satisfied, skipping upgrade: babel>=1.3 in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (2.9.0)
Requirement already satisfied, skipping upgrade: imagesize in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (1.2.0)
Requirement already satisfied, skipping upgrade: sphinxcontrib-devhelp in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (1.0.2)
Requirement already satisfied, skipping upgrade: sphinxcontrib-qthelp in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (1.0.3)
Requirement already satisfied, skipping upgrade: Jinja2>=2.3 in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (2.11.2)
Requirement already satisfied, skipping upgrade: sphinxcontrib-applehelp in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (1.0.2)
Requirement already satisfied, skipping upgrade: requests>=2.5.0 in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (2.25.0)
Requirement already satisfied, skipping upgrade: packaging in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (20.4)
Requirement already satisfied, skipping upgrade: sphinxcontrib-htmlhelp in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (1.0.3)
Requirement already satisfied, skipping upgrade: Pygments>=2.0 in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from sphinx) (2.7.2)
Requirement already satisfied, skipping upgrade: pytz>=2015.7 in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from babel>=1.3->sphinx) (2020.4)
Requirement already satisfied, skipping upgrade: MarkupSafe>=0.23 in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from Jinja2>=2.3->sphinx) (1.1.1)
Requirement already satisfied, skipping upgrade: urllib3<1.27,>=1.21.1 in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from requests>=2.5.0->sphinx) (1.26.2)
Requirement already satisfied, skipping upgrade: idna<3,>=2.5 in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from requests>=2.5.0->sphinx) (2.10)
Requirement already satisfied, skipping upgrade: certifi>=2017.4.17 in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from requests>=2.5.0->sphinx) (2020.11.8)
Requirement already satisfied, skipping upgrade: chardet<4,>=3.0.2 in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from requests>=2.5.0->sphinx) (3.0.4)
Requirement already satisfied, skipping upgrade: six in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from packaging->sphinx) (1.15.0)
Requirement already satisfied, skipping upgrade: pyparsing>=2.0.2 in c:\users\me\appdata\local\programs\python\python38\lib\site-packages (from packaging->sphinx) (2.4.7)
Installing collected packages: sphinx
Successfully installed sphinx-3.3.1

但是c:\users\me\appdata\local\programs\python\python38\lib\site-packages\sphinx\文件夹仍然不在那里

我甚至尝试从头开始运行一个新的Sphinx项目,使用sphinx-quickstart

For a list of supported codes, see
https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language.
> Project language [en]: en

Creating file C:\Users\me\Dropbox\Kuchentest\source\conf.py.
Creating file C:\Users\me\Dropbox\Kuchentest\source\index.rst.
Creating file C:\Users\me\Dropbox\Kuchentest\Makefile.
Creating file C:\Users\me\Dropbox\Kuchentest\make.bat.

Finished: An initial directory structure has been created.

You should now populate your master file C:\Users\me\Dropbox\Kuchentest\source\index.rst and create other documentation
source files. Use the Makefile to build the docs, like so:
   make builder
where "builder" is one of the supported builders, e.g. html, latex or linkcheck.

但是,尽管有这个输出,但没有创建这样的文件或source文件夹

我可以做些什么来彻底重置Sphinx安装并重新运行文档


Tags: inlibpackageslocalsphinxsiterequirementusers
1条回答
网友
1楼 · 发布于 2024-04-27 07:59:28

解决这个问题需要一个有点尴尬的解释,它同时依赖于:操作系统(Windows)、您的特定安装以及您如何执行Sphinx

在Windows上,您可以在不同的位置安装多个Python(取决于…):

  1. 一个常见的位置是C:\Program Files\Python3x

  2. {a1}是{}。我觉得这很不方便,因为它离根部很远

当前流行的扩展Python安装的方法是使用虚拟环境(venv

  1. 你的venv,无论你决定把它放在哪里。(使用venv被认为是事实上的最佳实践。)

在某个时间点,您将^{}设置为environment variable on Windows,Windows将在这些路径中查找Python安装。请注意Module Search Path的规则。现在的问题是,如果路径上设置了多个Python安装,Windows也会在其他安装中查找库

(关于在Windows上安装Python的一般说明是必要的。2019年的某个时候,微软将Python与Windows结合在一起——正如一位著名的SO用户in this answer所指出的,并提到in the documentation。大约在那个时候,有一个Windows bug要求使用管理员帐户设置环境变量-我找不到参考,但在某个地方提到过。这意味着建议单独安装Python并将环境变量设置为admin。)



话虽如此,您描述的问题有几个方面(请特别注意您正在使用的终端):

sphinx-build中的第一个警告表示Sphinx正在尝试从用户帐户安装读取文件(上面的第2点)。问题是,您正在执行sphinx-build的终端没有从用户帐户安装目录读取的权限,因为终端是在不同的用户帐户下运行的,或者因为帐户安装路径没有设置读取权限。。。话虽如此,请重新考虑警告:

copying static files... WARNING: Failed to copy a file in html_static_file: c:\users\me\appdata\local\programs\python\python38\lib\site-packages\sphinx\themes\basic\static/jquery-3.5.1.js: PermissionError(13, 'Permission denied')

WARNING: Failed to copy a file in html_static_file: c:\users\me\appdata\local\programs\python\python38\lib\site-packages\sphinx\themes\basic\static/jquery.js: PermissionError(13, 'Permission denied')

也可能是您从帐户安装中删除了Sphinx,而文件/路径根本不存在

接下来,当您尝试使用pip重新安装Sphinx时,不完全清楚它是一个outdated cache issue,还是pip正在您的PYTHONPATH上的另一个安装中找到Sphinx。。。可能是安装了Sphinx且终端没有读/写权限(取决于调用终端的用户帐户),或者目录可能隐藏在文件资源管理器中

What can I do to cleanly reset my Sphinx installation and get my documentation to run again?

您的Python基础安装(上面的第1点和第2点)只应针对系统或用户范围的更改(而不是特定的项目更改)写入

强烈建议您使用^{}。(如果你之前还没有考虑过这是合适的时间,因为这是最简单、最干净的解决方案)。这一点最初看起来可能令人困惑,因为historically there have been several virtual-environments for Python。目前venv是最常被引用的解决方案,使用它很简单,您的IDE应该有一个内置的UI来帮助您通过几次单击来创建它

venv是一个扩展基本安装的Python环境,它避免了在必须进行特定于项目的更改时需要更改基本安装(例如安装Sphinx,理想情况下应该在venv而不是基本安装上。)

最后,当您从终端运行Sphinx时,建议在终端上activate your ^{},否则执行的Python安装may depend on the user account that会调用终端

相关问题 更多 >