diff --git a/Aptfile b/Aptfile new file mode 100644 index 0000000..692b627 --- /dev/null +++ b/Aptfile @@ -0,0 +1,7 @@ +libglib2.0-0 +libgobject-2.0-0 +libpango-1.0-0 +libpangocairo-1.0-0 +libcairo2 +libharfbuzz0b +libfontconfig1 diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..8a7bba7 --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: gunicorn config.wsgi --log-file - diff --git a/config/__pycache__/wsgi.cpython-311.pyc b/config/__pycache__/wsgi.cpython-311.pyc index 15a97ab..62812cf 100644 Binary files a/config/__pycache__/wsgi.cpython-311.pyc and b/config/__pycache__/wsgi.cpython-311.pyc differ diff --git a/config/wsgi.py b/config/wsgi.py index 6dad46a..61408cc 100644 --- a/config/wsgi.py +++ b/config/wsgi.py @@ -21,34 +21,18 @@ except ImportError: pass # --- WeasyPrint Library Preloading --- -import traceback -import sys import ctypes import ctypes.util -lib_paths = [ - '/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0', - '/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0', - '/usr/lib/x86_64-linux-gnu/libgobject-2.0-0.so', - '/usr/lib/x86_64-linux-gnu/libfontconfig.so.1', - '/usr/lib/x86_64-linux-gnu/libcairo.so.2', - '/usr/lib/x86_64-linux-gnu/libpango-1.0.so.0', - '/usr/lib/x86_64-linux-gnu/libpango-1.0-0.so', - '/usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0', -] - -for path in lib_paths: +# Try to find and load libraries dynamically to help WeasyPrint on different platforms +libs_to_load = ['glib-2.0', 'gobject-2.0', 'fontconfig', 'cairo', 'pango-1.0', 'pangoft2-1.0'] +for lib_name in libs_to_load: try: - ctypes.CDLL(path) - except OSError: + path = ctypes.util.find_library(lib_name) + if path: + ctypes.CDLL(path) + except Exception: pass - -try: - import weasyprint -except Exception as e: - error_msg = f"WeasyPrint Import Error: {str(e)}\n{traceback.format_exc()}" - with open("/tmp/weasyprint_wsgi_error.log", "w") as f: - f.write(error_msg) # ------------------------------------- os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') diff --git a/manage.py b/manage.py index b178566..1fb2261 100755 --- a/manage.py +++ b/manage.py @@ -17,30 +17,16 @@ def main(): # --- WeasyPrint Library Preloading --- import ctypes import ctypes.util - import traceback - - lib_paths = [ - '/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0', - '/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0', - '/usr/lib/x86_64-linux-gnu/libgobject-2.0-0.so', - '/usr/lib/x86_64-linux-gnu/libfontconfig.so.1', - '/usr/lib/x86_64-linux-gnu/libcairo.so.2', - '/usr/lib/x86_64-linux-gnu/libpango-1.0.so.0', - '/usr/lib/x86_64-linux-gnu/libpango-1.0-0.so', - '/usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0', - ] - for path in lib_paths: + + # Try to find and load libraries dynamically to help WeasyPrint on different platforms + libs_to_load = ['glib-2.0', 'gobject-2.0', 'fontconfig', 'cairo', 'pango-1.0', 'pangoft2-1.0'] + for lib_name in libs_to_load: try: - ctypes.CDLL(path) - except OSError: + path = ctypes.util.find_library(lib_name) + if path: + ctypes.CDLL(path) + except Exception: pass - - try: - import weasyprint - except Exception as e: - error_msg = f"WeasyPrint Import Error: {str(e)}\n{traceback.format_exc()}" - with open("/tmp/weasyprint_error.log", "w") as f: - f.write(error_msg) # ------------------------------------- os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')