mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-07 10:14:46 -04:00
Allow running calibre under both python2 and python3 from the same source checkout
This commit is contained in:
parent
4e3c64d09f
commit
86ffa4f717
29
README.python3
Normal file
29
README.python3
Normal file
@ -0,0 +1,29 @@
|
||||
Efforts to port calibre to python 3 are ongoing. calibre can be run
|
||||
using python3 under Linux. To do so, install python 3, checkout calibre
|
||||
from source with
|
||||
|
||||
git clone git@github.com:kovidgoyal/calibre.git && cd calibre
|
||||
|
||||
Then, setup calibre to run under python2, with:
|
||||
|
||||
python2 setup.py bootstrap
|
||||
|
||||
Check that calibre works, with:
|
||||
|
||||
python2 run-local calibre
|
||||
|
||||
Now build the calibre C extensions for python 3 with:
|
||||
|
||||
CALIBRE_PY3_PORT=1 python3 setup.py build
|
||||
|
||||
You should now be able to run the calibre test suite using:
|
||||
|
||||
python3 setup.py test
|
||||
|
||||
And run calibre itself (which may not work) with:
|
||||
|
||||
python3 run-local calibre
|
||||
|
||||
|
||||
For the status of the port, and discussion of its design, see
|
||||
https://github.com/kovidgoyal/calibre/pull/870
|
@ -217,6 +217,10 @@ def init_env():
|
||||
class Build(Command):
|
||||
|
||||
short_description = 'Build calibre C/C++ extension modules'
|
||||
if ispy3:
|
||||
DEFAULT_OUTPUTDIR = os.path.abspath(os.path.join(SRC, 'calibre', 'plugins', '3'))
|
||||
DEFAULT_BUILDDIR = os.path.abspath(os.path.join(os.path.dirname(SRC), 'build', '3'))
|
||||
else:
|
||||
DEFAULT_OUTPUTDIR = os.path.abspath(os.path.join(SRC, 'calibre', 'plugins'))
|
||||
DEFAULT_BUILDDIR = os.path.abspath(os.path.join(os.path.dirname(SRC), 'build'))
|
||||
|
||||
|
@ -198,7 +198,10 @@ class Plugins(collections.Mapping):
|
||||
def load_plugin(self, name):
|
||||
if name in self._plugins:
|
||||
return
|
||||
sys.path.insert(0, sys.extensions_location)
|
||||
plugins_loc = sys.extensions_location
|
||||
if ispy3:
|
||||
plugins_loc = os.path.join(plugins_loc, '3')
|
||||
sys.path.insert(0, plugins_loc)
|
||||
try:
|
||||
del sys.modules[name]
|
||||
except KeyError:
|
||||
@ -210,7 +213,7 @@ class Plugins(collections.Mapping):
|
||||
p = None
|
||||
plugin_err = unicode_type(err)
|
||||
self._plugins[name] = p, plugin_err
|
||||
sys.path.remove(sys.extensions_location)
|
||||
sys.path.remove(plugins_loc)
|
||||
|
||||
def __iter__(self):
|
||||
return iter(self.plugins)
|
||||
|
Loading…
x
Reference in New Issue
Block a user