Allow running calibre from source without needing to run either develop or install

This commit is contained in:
Kovid Goyal 2019-04-10 11:26:47 +05:30
parent d3e42a4cf3
commit 4e3c64d09f
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 28 additions and 0 deletions

26
run-local Executable file
View File

@ -0,0 +1,26 @@
#!/usr/bin/env python
import importlib
import os
import sys
sys.run_local = os.path.abspath(__file__)
base = os.path.dirname(sys.run_local)
src = os.path.join(base, 'src')
if src not in sys.path:
sys.path.insert(0, src)
sys.resources_location = os.path.join(base, 'resources')
sys.extensions_location = os.path.join(src, 'calibre', 'plugins')
entry_point = sys.argv[1]
del sys.argv[1]
del src
del base
for ep in importlib.import_module('calibre.linux').entry_points.values():
for line in ep:
q, spec = (x.strip() for x in line.split('='))
if q == entry_point:
mod, func = spec.split(':')
m = importlib.import_module(mod)
sys.exit(getattr(m, func)())
raise SystemExit('No entry point named: {}'.format(entry_point))

View File

@ -62,6 +62,8 @@ class Worker(object):
def executable(self):
if hasattr(sys, 'running_from_setup'):
return [sys.executable, os.path.join(sys.setup_dir, 'run-calibre-worker.py')]
if getattr(sys, 'run_local', False):
return [sys.executable, sys.run_local, self.exe_name]
e = self.exe_name
if iswindows:
return os.path.join(os.path.dirname(sys.executable),