Python 运行服务器命令时出现问题

Python 运行服务器命令时出现问题,python,django,pycharm,wand,Python,Django,Pycharm,Wand,我有一个脚本,是Django应用程序的一部分,可以从PDF制作缩略图。我正在使用优秀的魔杖包来完成: 如果我从命令行运行/manage.py runserver,它运行正常,但是如果从PyCharm运行,它会崩溃 当我逐步浏览代码时,问题是用于打开blob的代码总是返回一个空的wand.image对象。它是正确的类(wand.image),但它是一个空类。我传递给它的对象是pdf,但是blob转换是空的,它不会产生任何错误 错误发生在下一行(single\u image=all\u pages.

我有一个脚本,是Django应用程序的一部分,可以从PDF制作缩略图。我正在使用优秀的魔杖包来完成:

如果我从命令行运行
/manage.py runserver
,它运行正常,但是如果从PyCharm运行,它会崩溃

当我逐步浏览代码时,问题是用于打开blob的代码总是返回一个空的
wand.image
对象。它是正确的类(
wand.image
),但它是一个空类。我传递给它的对象是pdf,但是blob转换是空的,它不会产生任何错误

错误发生在下一行(
single\u image=all\u pages.sequence[0]
),因为
all\u pages
为空,因此索引超出范围

同样,如果我从命令行启动服务器,它会工作,但是如果我从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
但当我从PyCharm控制台执行相同操作时,我得到:

(Pdb) >? p all_pages
<wand.image.Image: (empty)>
编辑:这很有趣。如果我从系统终端启动PyCharm,它可以正常工作


从终端启动时,听起来您正在使用不同的用户权限运行PyCharm。

几个月前我遇到了这个问题。我找到的唯一修复方法是在管理模式下启动所有东西。这可能是系统的权限被拒绝问题。

如何调用它?从
views.py
pdf\u thumb=convert\u to\u thumb(pdf\u path,pub.slug)
我建议比较PyCharm和cli@Marat是的,我试过了。除非PyCharm中有隐藏的环境变量(即“编辑配置”面板中没有),否则情况并非如此。环境变量是相同的。我建议检查pdb中的几个值,例如,
sys.executable
os.environ
wand.image.\uuuuuuuu文件
。您也可以尝试以不同的方式加载图像,例如WandImage(filename=pdf_path),并查看是否会导致更具决定性的错误。
(Pdb) >? p all_pages
<wand.image.Image: (empty)>
<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>