2011-11-04 118 views
13

我嘗試爲使用Python 3.x編寫的項目創建文檔。 Sphinx我想使用的工具,根據official site,其最新版本1.1.2與Python 3.1+兼容。我的操作系統是Archlinux,這是一個使用Python 3.2+作爲默認Python包的Linux發行版。如何強制Sphinx使用Python 3.x解釋器

安裝和配置很簡單(easy_install -U Sphinx,然後sphinx-quickinstall),我從來沒有被要求在2.x或3.x Python解釋器之間進行選擇。但是當我要求Sphinx創建我的項目的文檔時,我的代碼就像我爲Python 2.x編寫的那樣進行了分析。

斯芬克斯準備好了Python 3.x嗎?我犯了一個錯誤嗎?

回答

6

昨天晚上我遇到了這個完全相同的問題,當時我遇到了你的問題。 —我也在Arch上。

我想這個問題可能是一些不同的事情,但對我來說,解決方案是我安裝了python-disribute軟件包的Python 2版本,因此有easy_install-2.7而不是easy_install-3.2

我相信我的情況下python-distribute了錯誤版本,安裝在我嘗試安裝之前從吃豆子獅身人面像(安裝版本1.0.8),所以在卸載獅身人面像和所有隨後不需要依賴pacman -Rsu python-sphinx,然後在安裝python-distribute了我正確版本easy_install,然後重新安裝斯芬克斯easy_install和獅身人面像安裝如預期般運作。

如果你有其他東西取決於 python-distribute那麼這個過程可能有點不同。但是從試圖刪除 python-distribute開始,並從那裏開始工作。

廢棄最後一部分。今天早上太早了,我並沒有想太多。 python2-distributepython-distribute是我認爲可以共存的單獨包。因此,如果這是您的問題,您只需檢查是否有python-distribute(不是「2」),如果不安裝它,然後確保使用easy_install-3.2安裝Sphinx。

希望這可以幫助你。

0

我認爲斯芬克斯只是使用「python」命令作爲解釋器。但是根據Makefile,當運行make進行安裝時,可以使用PYTHON選項指定自己的選項。

+0

謝謝你的回答; 'make html' should(?)可能會在我的系統Python 3.2.2上調用'python',id est,這正是我對Sphinx的期望。但是我得到的結果表明另一個解釋器被稱爲(python2?),即使我不明白爲什麼。 – suizokukan

+1

在終端「ls -l/usr/bin/python」中寫入,它將打印您的默認解釋器版本。 – Nicolas

+1

謝謝你的提示,但'ls -l/usr/bin/python'告訴我,'/ usr/bin/python'鏈接到我的系統上的'python3',id est到Python 3.2.2。 – suizokukan

1

似乎Sphinx僅與Python-2支持一起安裝。雖然有多種方法可以爲python3安裝Sphinx,但只需使用virtualenv即可創建一個默認使用python3的自定義環境。

virtualenv -p /path/to/python-3

而且裏面的virtualenv安裝獅身人面像:

pip install Sphinx

作爲獎勵,這個方法可以讓你創建不同的項目定製的環境。

PS。你可能要考慮使用virtualenvwrapper

+0

謝謝你的想法。你說「有多種方法可以爲python3安裝Sphinx」:你能否給我一些解釋,因爲我暫時不能使用 - virtualenv? – suizokukan

+0

@suizokukan嗯,這取決於平臺和它的發行版。例如,Gentoo GNU/Linux支持開箱即用的Python並行安裝。它還爲可執行工具提供了版本前綴(我目前在我的機器上啓用了Python-2.7和Python-3.2,因此安裝了兩個易於安裝的命令:'easy-install-2.7'和'easy-install-3.2') 。那麼您使用的是哪種平臺/發行版? – plaes

+0

我正在使用(最新)Archlinux;在這個發行版上,命令'python'被鏈接到Python 3.2.2。 – suizokukan

7

在Ubuntu上,python3-sphinx是一個單獨的軟件包。就我而言,我需要安裝python3-斯芬克斯:

sudo apt-get install python3-sphinx 

你或許可以一臺機器上同時運行,但我只是刪除了舊:

sudo apt-get remove python-sphinx 

我的舊的makefile,工作得很好用在此之後我的Python 3代碼。

+0

在macOS上,卸載2.7版並僅安裝3.5版不會執行任何操作。 – oarfish

5

我在Ubunut並有同樣的問題。我不會用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)) 

這是一樣的獅身人面像建造但有不同的解釋。 在Makefile中我改變了以下行:

SPHINXBUILD = sphinx3-build 

現在將文件複製到該文件夾​​/usr/bin/

sudo cp sphinx3-build /usr/bin/ 

這爲我工作。只有將 腳本放入與Makefile相同的文件夾中,並將SPHINXBUILD設置爲 ./sphinx3-build,您也可以在本地將其用於一個項目。

+0

謝謝!這工作正常!我認爲將通用/ usr/bin/python符號鏈接從/ usr/bin/python2切換到/ usr/bin/python3是一個好主意,因爲我只使用python3 - 呃,它不是..其他progs然後由於錯誤的python語法導致的錯誤。^^這是一個更好的解決方案。 – stevosn

2

類似的解決方案已經提供的那些是把調用sphinx.main()直接進入Makefile中的SPHINXBUILD變量:

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

獅身人面像產生的「用戶友好支票sphinx-構建「代碼塊失敗,然後我只是刪除它。這個解決方案比我更喜歡,因爲它不需要單獨的腳本,也不需要刪除任何python安裝或sphinx模塊。

+0

這不幸對我沒有任何幫助。 – oarfish

+0

@oarfish如果你在windows上,可以在make.bat文件中使用非常類似的命令。 – Johann

+0

忘了提及我在OSX上。 – oarfish

1

當我搜索答案時,這是一遍又一遍地發佈的網站。我在想這個答案不容易找到,因爲其他人都比我明白的更好地理解獅身人面像。但是,如果任何仍在尋找答案,這是我最終結束是什麼了:

sudo易於得到更新

sudo易於得到安裝python3

命令和apt-get安裝sqlite3的

命令和apt-get安裝IDLE3

sudo易於得到安裝python3-PIP

sudo易於得到安裝python3-docutils的

sudo易於得到安裝python3-Jinja2的

sudo易於得到安裝python3-Pygments來做

須藤PIP3安裝獅身人面像

的關鍵是我失蹤的事實,有一個PIP3。在添加軟件包作爲習慣之前,我還會更新系統。

2

安裝:PIP安裝獅身人面像爲python3PIP 3那樣)。

pip3 install -U sphinx 

大廈:Makefile(的Linux/Mac上)的變化。

SPHINXBUILD = python -msphinx 

在生成文件上面的行改變python3(或python3.x)

SPHINXBUILD = python3 -msphinx 

如果默認蟒指向2.X版本 蟒。

相關問題