在Windows上删除和重新安装Python Sphinx

在Windows上删除和重新安装Python Sphinx,python,windows,pip,python-sphinx,Python,Windows,Pip,Python Sphinx,我正在尝试使用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 b

我正在尝试使用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.
但是,

  • build
    中的HTML文件
    kaesekuchen
    未更新/更改
  • 文件夹
    c:\users\me\appdata\local\programs\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
    
    但是,尽管有此输出,但没有创建此类文件或
    source
    文件夹


    如何才能彻底重置Sphinx安装并重新运行文档?

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

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

  • 一个常见的位置是
    C:\ProgramFiles\Python3x

  • 代码是
    C:\Users\me\AppData\Local\Programs\Python\Python3.x\
    。我觉得这很不方便,因为它离根部很远

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

  • 您的
    venv
    ,无论您决定将其放置在何处。(使用
    venv
    被认为是“事实上”的最佳实践。)
  • 在某个时间点,您将设置为,Windows将在这些路径中查找Python安装。注意这些规则。现在的问题是,如果路径上设置了多个Python安装,Windows也会在其他安装中查找库

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



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

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

    复制静态文件…警告:无法复制html\u static\u文件中的文件:c:\users\me\appdata\local\programs\python38\lib\site packages\sphinx\themes\basic\static/jquery-3.5.1.js:PermissionError(13,“权限被拒绝”)

    警告:未能复制html\u static\u文件中的文件:c:\users\me\appdata\local\programs\python38\lib\site packages\sphinx\themes\basic\static/jquery.js:PermissionError(13,“权限被拒绝”)

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

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

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

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

    <> P>强烈建议您使用A.(如果您以前没有考虑过这样做,因为它是最简单和最干净的解决方案)。。这一点最初看起来可能令人困惑,因为目前最常引用的解决方案是
    venv
    ,使用它很简单,您的IDE应该有一个内置的UI来帮助您通过几次单击来创建它

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


    最后,当您从终端运行Sphinx时,建议在终端上运行Sphinx,否则执行的Python安装将调用终端。

    不要在系统Python中安装软件包。这只会带来痛苦和痛苦。始终创建一个虚拟环境,然后将软件包安装到该环境中s(1)创建一个目录来保存您的项目,(2)将
    cd
    放入该目录,(3)将
    python-m venv env
    创建虚拟环境,(4)将
    source env/bin/activate
    激活虚拟环境,(5)将
    env/bin/pip安装Sphinx
    安装Sphinx,(6)使用Sphinx快速入门。@StevePiercy只是为了补充上述评论,我个人
    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.