mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix #998 (py3: Load plugins from the same (correct) path)
This commit is contained in:
parent
7114083e09
commit
d8af514a92
@ -147,6 +147,12 @@ def cache_dir():
|
||||
ans = cache_dir.ans = _get_cache_dir()
|
||||
return ans
|
||||
|
||||
|
||||
plugins_loc = sys.extensions_location
|
||||
if ispy3:
|
||||
plugins_loc = os.path.join(plugins_loc, '3')
|
||||
|
||||
|
||||
# plugins {{{
|
||||
|
||||
|
||||
@ -195,9 +201,6 @@ class Plugins(collections.Mapping):
|
||||
def load_plugin(self, name):
|
||||
if name in self._plugins:
|
||||
return
|
||||
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]
|
||||
|
@ -22,7 +22,7 @@ from calibre import as_unicode, prints
|
||||
from calibre.constants import (
|
||||
DEBUG, __appname__ as APP_UID, __version__, config_dir, filesystem_encoding,
|
||||
is_running_from_develop, isbsd, isfrozen, islinux, isosx, iswindows, isxp,
|
||||
plugins
|
||||
plugins, plugins_loc
|
||||
)
|
||||
from calibre.ebooks.metadata import MetaInformation
|
||||
from calibre.gui2.linux_file_dialogs import (
|
||||
@ -821,7 +821,7 @@ class Application(QApplication):
|
||||
if headless:
|
||||
if not args:
|
||||
args = sys.argv[:1]
|
||||
args.extend(['-platformpluginpath', sys.extensions_location, '-platform', 'headless'])
|
||||
args.extend(['-platformpluginpath', plugins_loc, '-platform', 'headless'])
|
||||
self.headless = headless
|
||||
qargs = [i.encode('utf-8') if isinstance(i, unicode_type) else i for i in args]
|
||||
self.pi, pi_err = plugins['progress_indicator']
|
||||
@ -1167,7 +1167,7 @@ def ensure_app(headless=True):
|
||||
args = sys.argv[:1]
|
||||
has_headless = isosx or islinux or isbsd
|
||||
if headless and has_headless:
|
||||
args += ['-platformpluginpath', sys.extensions_location, '-platform', 'headless']
|
||||
args += ['-platformpluginpath', plugins_loc, '-platform', 'headless']
|
||||
_store_app = QApplication(args)
|
||||
if headless and has_headless:
|
||||
_store_app.headless = True
|
||||
|
@ -7,7 +7,7 @@ __docformat__ = 'restructuredtext en'
|
||||
Wrapper for multi-threaded access to a single sqlite database connection. Serializes
|
||||
all calls.
|
||||
'''
|
||||
import sqlite3 as sqlite, traceback, time, uuid, sys, os
|
||||
import sqlite3 as sqlite, traceback, time, uuid, os
|
||||
from sqlite3 import IntegrityError, OperationalError
|
||||
from threading import Thread
|
||||
from threading import RLock
|
||||
@ -17,7 +17,7 @@ from functools import partial
|
||||
from calibre.ebooks.metadata import title_sort, author_to_author_sort
|
||||
from calibre.utils.date import parse_date, isoformat, local_tz, UNDEFINED_DATE
|
||||
from calibre import isbytestring, force_unicode
|
||||
from calibre.constants import iswindows, DEBUG, plugins
|
||||
from calibre.constants import iswindows, DEBUG, plugins, plugins_loc
|
||||
from calibre.utils.icu import sort_key
|
||||
from calibre import prints
|
||||
from polyglot.builtins import unicode_type, cmp
|
||||
@ -238,7 +238,7 @@ def icu_collator(s1, s2):
|
||||
def load_c_extensions(conn, debug=DEBUG):
|
||||
try:
|
||||
conn.enable_load_extension(True)
|
||||
ext_path = os.path.join(sys.extensions_location, 'sqlite_custom.'+
|
||||
ext_path = os.path.join(plugins_loc, 'sqlite_custom.'+
|
||||
('pyd' if iswindows else 'so'))
|
||||
conn.load_extension(ext_path)
|
||||
conn.enable_load_extension(False)
|
||||
|
@ -13,7 +13,7 @@ Test a binary calibre build to ensure that all needed binary images/libraries ha
|
||||
|
||||
import os, ctypes, sys, unittest, time
|
||||
|
||||
from calibre.constants import plugins, iswindows, islinux, isosx, ispy3
|
||||
from calibre.constants import plugins, iswindows, islinux, isosx, ispy3, plugins_loc
|
||||
from polyglot.builtins import iteritems, map, unicode_type, getenv, native_string_type
|
||||
|
||||
is_ci = os.environ.get('CI', '').lower() == 'true'
|
||||
@ -103,7 +103,7 @@ class BuildTest(unittest.TestCase):
|
||||
if name in exclusions:
|
||||
if name in ('libusb', 'libmtp'):
|
||||
# Just check that the DLL can be loaded
|
||||
ctypes.CDLL(os.path.join(sys.extensions_location, name + ('.dylib' if isosx else '.so')))
|
||||
ctypes.CDLL(os.path.join(plugins_loc, name + ('.dylib' if isosx else '.so')))
|
||||
continue
|
||||
mod, err = plugins[name]
|
||||
self.assertFalse(err or not mod, 'Failed to load plugin: ' + name + ' with error:\n' + err)
|
||||
|
Loading…
x
Reference in New Issue
Block a user