私は、pdfsからサムネイルを作成するDjangoアプリケーションの一部のスクリプトを用意しています。私は優れたワンドパッケージを使っています:Here are the Wand docs コマンドラインから./manage.py runserver
を実行するとうまく動作しますが、PyCharmから実行した場合、正常に動作します。runserverコマンドでPyCharmの問題
コードをステップ実行すると、ブロブを開くために使用されるコードが常に空のwand.image
オブジェクトを返すという問題があります。それは正しいクラス(wand.image
)ですが、空のクラスです。私が渡すオブジェクトはpdfですが、エラーをまったく発生させないBLOB変換は空です。
all_pages
が空でインデックスが範囲外であるため、次の行(single_image = all_pages.sequence[0]
)でエラーが発生します。
また、コマンドラインからサーバーを起動すると動作しますが、PyCharmから起動すると、サーバーは破損します。
私はvirtualenvを使用しています。
ここで私が実行しているコードです:
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
編集:ここではいくつかのデバッグ情報だ
を私はCLIから実行し、all_pages
の値をチェックするpdb.set_trace()
を使用する場合、私はこの
(Pdb) p all_pages
<wand.image.Image: 3da0549 'PDF' (612x792)>
を取得するには
私はPyCharmコンソールから同じことをすると、私は得る:
(Pdb) >? p all_pages
<wand.image.Image: (empty)>
image_binary
の値は、どちらの場合も同じように見えます。私はそれらを区別した。
さらに、libmagick
(ImageMagickインストール)の値は、どちらの場合も/usr/local/lib/libMagickWand.dylib
です。
編集:これは興味深いです。 PyCharmをシステムターミナルから起動すると、正常に動作します。
EDIT:追加の関連する実行構成の設定
<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>
どのように呼び出されていますか? – GRAYgoose124
から 'views.py':' pdf_thumb = convert_to_thumb(pdf_path、pub.slug) ' –
PyCharmとcliの環境変数を比較することをお勧めします – Marat