How to force Sphinx to use Python 3.x interpreter
I'm on Ubunut and had the same problem. I won't use Josh_P or Nicolas answer because..
- I don't want to change my PYTHON path.
- I don't want to uninstall python-sphinx because I need it with older Projects.
So i fixed it with this little script called 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))
It's the same as sphinx-build but with a different interpreter. In the Makefile I changed the following line:
SPHINXBUILD = sphinx3-build
Now copy the file to the /usr/bin/
folder:
sudo cp sphinx3-build /usr/bin/
This worked for me. You could also use it locally for one project only by placing the
script into the same folder as the Makefile and set SPHINXBUILD
to
./sphinx3-build
.
I had this exact same problem last night, when I came across your question. — I am also on Arch.
I guess the problem could be a number of different things, but the solution for me was that I had the Python 2 version of the python-distribute
package installed and therefore had easy_install-2.7
not easy_install-3.2
.
I believe in my case the wrong version of python-distribute
was installed by my attempt to previously install Sphinx from pacman (which installs version 1.0.8), so uninstalling Sphinx and all subsequently unneeded dependencies pacman -Rsu python-sphinx
and then installing python-distribute
got me the right version of easy_install
, then reinstalling Sphinx with easy_install
and the Sphinx installation works as expected.
If you have other things that depend on python-distribute
then the process may be a little different. But start by just trying to remove python-distribute
and work from there.
Scrap that last part. It's too early in the morning and I wasn't thinking straight! python2-distribute
and python-distribute
are seperate packages which I believe can co-exist. So, if this is your problem all you need to do is check you have python-distribute
(not "2"), if not install it, and then ensure you use easy_install-3.2
to install Sphinx.
Hope this helps you.
On Ubuntu, python3-sphinx
is a separate package. In my case, I needed to install python3-sphinx:
sudo apt-get install python3-sphinx
You can probably run both on a machine, but I just removed the old one:
sudo apt-get remove python-sphinx
My old makefile worked just fine with my Python 3 code after this.
Installation: Install sphinx with pip for python3(pip3 like that).
pip3 install -U sphinx
Building: Makefile
(linux/Mac) changes.
SPHINXBUILD = python -msphinx
In above line in Makefile change python to python3(or python3.x) like
SPHINXBUILD = python3 -msphinx
if default python is pointing to 2.x version python.