Как заставить Sphinx использовать интерпретатор Python 3.x - PullRequest
16 голосов
/ 05 ноября 2011

Я пытаюсь создать документацию для проекта, написанного на Python 3.x. Sphinx - это инструмент , который я хочу использовать, и, согласно официальному сайту , его последняя версия 1.1.2 совместима с Python 3.1 + . Моя ОС - Archlinux, дистрибутив Linux, который использует Python 3.2+ в качестве пакета Python по умолчанию.

Установка и настройка просты (easy_install -U Sphinx, затем sphinx-quickinstall), и меня никогда не просили выбирать между интерпретатором Python 2.x или 3.x. Но когда я прошу Sphinx создать документацию для моего проекта, мой код анализируется так, как будто я написал его для Python 2.x.

Готов ли Sphinx к Python 3.x? Я сделал ошибку?

Ответы [ 8 ]

10 голосов
/ 21 сентября 2017

Установка: Установите sphinx с pip для python3 ( pip3 и т. Д.).

    pip3 install -U sphinx

Сборка: Makefile (linux / Mac).

    SPHINXBUILD   = python -msphinx

В строке выше в Makefile измените python на python3 (или python3.x) подобно

   SPHINXBUILD   = python3 -msphinx

если Python по умолчанию указывает на версию 2.x питон.

7 голосов
/ 29 мая 2014

В Ubuntu python3-sphinx - это отдельный пакет. В моем случае мне нужно было установить python3-sphinx:

sudo apt-get install python3-sphinx

Возможно, вы можете запустить оба на машине, но я только что удалил старую:

sudo apt-get remove python-sphinx

После этого мой старый makefile прекрасно работал с моим кодом Python 3.

6 голосов
/ 10 июля 2014

Я на Убунуте и у меня была такая же проблема. Я не буду использовать Josh_P или Николас ответ, потому что ..

  • Я не хочу менять свой путь PYTHON.
  • Я не хочу удалять python-sphinx, потому что он мне нужен для старых проектов.

Так что я исправил это с помощью этого маленького скрипта под названием sphinx3-build:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
Same as /usr/bin/sphinx-build but with different
interpreter
"""

import sys

if __name__ == '__main__':
    from sphinx import main, make_main
    if sys.argv[1:2] == ['-M']:
        sys.exit(make_main(sys.argv))
    else:
        sys.exit(main(sys.argv))

Это то же самое, что и sphinx-build, но с другим интерпретатором. В Makefile я изменил следующую строку:

SPHINXBUILD   = sphinx3-build

Теперь скопируйте файл в папку /usr/bin/:

sudo cp sphinx3-build /usr/bin/

Это сработало для меня. Вы также можете использовать его локально для одного проекта, поместив Сценарий в ту же папку, что и Makefile и установите SPHINXBUILD в ./sphinx3-build.

6 голосов
/ 10 ноября 2011

У меня была точно такая же проблема вчера вечером, когда я наткнулся на ваш вопрос. & Mdash; Я тоже на Arch.

Я полагаю, что проблема может заключаться в нескольких разных вещах, но решение для меня заключалось в том, что у меня была установлена ​​версия пакета python-distribute для Python 2, и поэтому easy_install-2.7 не easy_install-3.2.

Я полагаю, что в моем случае неправильная версия python-distribute была установлена ​​при попытке предварительно установить Sphinx из pacman (который устанавливает версию 1.0.8), поэтому удалите Sphinx и все последующие ненужные зависимости pacman -Rsu python-sphinx, а затем установите python-distribute дал мне правильную версию easy_install, затем переустановил Sphinx с easy_install и установка Sphinx работает как положено.

Если у вас есть другие вещи, которые зависят от python-distribute, тогда процесс может быть немного другим. Но начните с простого удаления python-distribute и работайте оттуда.

Удалите эту последнюю часть. Слишком рано утром, и я не думал прямо! python2-distribute и python-distribute - это отдельные пакеты, которые, я считаю, могут сосуществовать. Итак, если это ваша проблема, все, что вам нужно сделать, это проверить, что у вас есть python-distribute (не «2»), если не установить его, а затем убедиться, что вы используете easy_install-3.2 для установки Sphinx.

Надеюсь, это поможет вам.

2 голосов
/ 02 апреля 2017

Когда я искал ответ, это сайт, который появлялся снова и снова. Я думаю, что ответ не так легко найти, потому что все остальные понимают сфинкса лучше, чем я могу понять. Но если кто-то все еще ищет ответ, это то, что в конечном итоге я и получил:

sudo apt-get update

sudo apt-get install python3

sudo apt-get install sqlite3

sudo apt-get install idle3

sudo apt-get install python3-pip

sudo apt-get install python3-documentstils

sudo apt-get install python3-jinja2

sudo apt-get install python3-pygments

sudo pip3 установить Sphinx

Ключ был в том, что мне не хватало того факта, что был pip3. Я также обновляю систему перед добавлением пакета по привычке.

2 голосов
/ 16 ноября 2016

Решение, подобное уже предложенному, состоит в том, чтобы поместить вызов sphinx.main () прямо в переменную SPHINXBUILD в Makefile:

SPHINXBUILD   = python3 -c "import sys,sphinx;sys.exit(sphinx.main(sys.argv))"

Сгенерированный sphinx блок кода «Дружественная проверка для sphinx-build» не работает, поэтому я просто удалил его. Это решение было предпочтительнее для меня, поскольку оно не требовало отдельного скрипта или удаления каких-либо установок Python или модуля sphinx.

1 голос
/ 05 ноября 2011

Похоже, что Sphinx устанавливается только с поддержкой Python-2. Хотя существуют разные способы установки Sphinx для python3, просто используйте virtualenv , чтобы создать пользовательскую среду, которая по умолчанию использует python3.

virtualenv -p /path/to/python-3 foo

А внутри virtualenv установите Sphinx:

pip install Sphinx

В качестве бонуса этот подход позволяет создавать собственные среды для различных проектов.

PS. Возможно, вы захотите использовать virtualenvwrapper .

0 голосов
/ 05 ноября 2011

Я думаю, что Sphinx просто использует команду "python" в качестве интерпретатора. Но в соответствии с Makefile вы можете указать свой собственный параметр PYTHON при запуске make для установки.

...