2017-01-26 3 views
8

Ich habe ein Skript, Teil einer Django App, die Thumbnails aus PDFs erstellt. Ich bin mit dem ausgezeichneten Stab Paket, es zu tun: Here are the Wand docsPyCharm Problem mit runserver Befehl

Es läuft gut, wenn ich ./manage.py runserver von der Kommandozeile zu tun, aber wenn ich von PyCharm laufen, es bricht.

Wenn ich durch den Code gehe, ist das Problem, dass der Code zum Öffnen des Blobs immer ein leeres wand.image Objekt zurückgibt. Es ist die richtige Klasse (wand.image), aber es ist eine leere. Das Objekt, das ich übergeben habe, ist eine PDF, aber die Blob-Konvertierung, die überhaupt keinen Fehler erzeugt, ist leer.

Der Fehler tritt in der nächsten Zeile auf (single_image = all_pages.sequence[0]), weil all_pages leer ist, so dass der Index außerhalb des Bereichs liegt.

Noch einmal, wenn ich den Server von der Befehlszeile aus starte, funktioniert es, aber wenn ich von PyCharm starte, bricht es.

Ich benutze virtualenv.

Hier ist der Code, den ich laufen:

from wand.image import Image as WandImage 
from wand.color import Color 


def convert_to_thumb(pdf_path, slug): 
    with open(pdf_path) as f: 
     image_binary = f.read() 
    all_pages = WandImage(blob=image_binary) #<-- Here image_binary is a pdf 
    single_image = all_pages.sequence[0]  #<-- BOOM! all_pages is a wand.image, but it's empty. Gives an Index error 
    with WandImage(single_image) as i: 
     i.format = 'png' 
     i.background_color = Color('white') 
     i.alpha_channel = 'remove' 
     i.transform(resize='x100') 
     save_name = slug + '_pdf_preview.png' 
     i.save(filename='/foo/bar/' + save_name) 

     return i 

EDIT: Hier ist ein Debug-Info

Wenn ich von CLI ausführen und verwenden pdb.set_trace() den Wert von all_pages Ich erhalte diese

(Pdb) p all_pages 
<wand.image.Image: 3da0549 'PDF' (612x792)> 
überprüfen

Aber wenn ich das gleiche von der PyCharm-Konsole mache, bekomme ich:

(Pdb) >? p all_pages 
<wand.image.Image: (empty)> 

Der Wert image_binary scheint in beiden Fällen identisch zu sein. Ich habe sie diffamiert.

Darüber hinaus ist der Wert libmagick (die ImageMagick Installation) in beiden Fällen /usr/local/lib/libMagickWand.dylib.

EDIT: Das ist interessant. Wenn ich PyCharm vom System Terminal aus starte, funktioniert es einwandfrei.

EDIT: Hinzugefügt relevante Laufkonfigurationseinstellungen

<configuration default="false" name="foo_bar_app" type="Python.DjangoServer" factoryName="Django server"> 
    <option name="INTERPRETER_OPTIONS" value="" /> 
    <option name="PARENT_ENVS" value="true" /> 
    <envs> 
    <env name="PYTHONUNBUFFERED" value="1" /> 
    <env name="FOO_USERID" value="foobar" /> 
    <env name="DJANGO_SETTINGS_MODULE" value="foo_bar.settings" /> 
    </envs> 
    <option name="SDK_HOME" value="$USER_HOME$/venv/foo_bar/bin/python" /> 
    <option name="WORKING_DIRECTORY" value="" /> 
    <option name="IS_MODULE_SDK" value="false" /> 
    <option name="ADD_CONTENT_ROOTS" value="true" /> 
    <option name="ADD_SOURCE_ROOTS" value="true" /> 
    <module name="foo_bar_app" /> 
    <option name="launchJavascriptDebuger" value="false" /> 
    <option name="port" value="8000" /> 
    <option name="host" value="" /> 
    <option name="additionalOptions" value="" /> 
    <option name="browserUrl" value="" /> 
    <option name="runTestServer" value="false" /> 
    <option name="runNoReload" value="false" /> 
    <option name="useCustomRunCommand" value="false" /> 
    <option name="customRunCommand" value="" /> 
    <RunnerSettings RunnerId="PyDebugRunner" /> 
    <RunnerSettings RunnerId="PythonCover" /> 
    <RunnerSettings RunnerId="PythonRunner" /> 
    <ConfigurationWrapper RunnerId="PyDebugRunner" /> 
    <ConfigurationWrapper RunnerId="PythonCover" /> 
    <ConfigurationWrapper RunnerId="PythonRunner" /> 
    <method /> 
</configuration> 
+0

Wie heißt es? – GRAYgoose124

+0

Von 'views.py':' pdf_thumb = convert_to_thumb (pdf_path, pub.slug) ' –

+2

Ich würde vorschlagen, Umgebungsvariablen in PyCharm und CLI zu vergleichen – Marat

Antwort

0

EDIT: Das ist interessant. Wenn ich PyCharm vom System Terminal aus starte, funktioniert es einwandfrei.

Klingt so, als ob Sie PyCharm mit verschiedenen Benutzerrechten ausführen, wenn Sie vom Terminal aus starten.