Подтвердить что ты не робот

Как заставить Sphinx использовать интерпретатор Python 3.x

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

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

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

4b9b3361

Ответ 1

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

Я предполагаю, что проблема может быть несколько разных вещей, но решение для меня состояло в том, что у меня была версия Python 2 пакета python-disribute, и поэтому она имела easy_install-2.7 not 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

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

sudo apt-get install python3-sphinx

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

sudo apt-get remove python-sphinx

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

Ответ 3

Я на Ubunut и имею ту же проблему. Я не буду использовать Josh_P или Nicolas, потому что..

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

Итак, я исправил его с помощью этого небольшого script, называемого 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/

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

Ответ 4

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

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

Сбой, созданный с помощью сфинкса "Удобная проверка для sphinx-build", сбой кода, поэтому я просто удалил его. Это решение было предпочтительнее для меня, поскольку оно не требовало отдельного script или удаления любой установки python или модуля sphinx.

Ответ 5

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

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

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

pip install Sphinx

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

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

Ответ 6

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

Обновление sudo apt-get

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-docutils

sudo apt-get install python3-jinja2

sudo apt-get install python3-pygments

sudo pip3 install Sphinx

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

Ответ 7

Установка: Установите sphinx с пипом для python3 (например, pip3).

    pip3 install -U sphinx

Здание: Makefile (linux/Mac).

    SPHINXBUILD   = python -msphinx

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

   SPHINXBUILD   = python3 -msphinx

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

Ответ 8

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