PyCharm - 未解决的库 'staticfiles'

18

我正在使用PyCharm开发Django项目。不幸的是,PyCharm无法解析我想在模板中使用的模板标签。

{% load staticfiles %}

该项目通过vagrant在Ubuntu虚拟机上运行。运行配置已经知道我在虚拟机中使用的virtualenv(远程解释器设置)。

我的设置如下:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.humanize',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'django.contrib.flatpages',
    'django_extensions']

INSTALLED_APPS += get_core_apps(['myapp.dashboard')

STATICFILES_FINDERS = (
    'compressor.finders.CompressorFinder',
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'compressor.finders.CompressorFinder',
)

STATIC_URL = '/static/'

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, '../../../../myfolder/static'),
)

依然收到警告消息 Unresolved library 'staticfiles'。其他模板标签也有相同的情况。动态创建STATICFILES_DIRS可能是问题所在?如何解决?


这并没有解决我的问题。不仅仅是关于静态文件,还涉及到其他模板标签。 - RodrigoDela
你是否处于DEBUG模式? - gerosalesc
我看不到 STATIC_URL - gerosalesc
忘记在帖子中包含它。已编辑。 - RodrigoDela
阅读此链接的第二个答案中提到的内容:Pycharm需要将静态内容包含在应用程序根目录下名为static的文件夹中,但我也会尝试该问题中提到的其他解决方案,例如验证Pycharm是否将您的项目视为源代码。 - gerosalesc
推荐的帖子中提到的事情已经实现了。如果您没有配置STATICFILES_DIRS,则只需将静态文件夹放在应用程序根目录下即可。所有包含静态文件的文件夹都被标记为源。 - RodrigoDela
5个回答

28

在我的情况下,这是由于PyCharm找不到settings.py文件引起的。这是因为我有-local_setting、prod_setting等文件。因此,我选择File->Settings->Language & Frameworks->Django->Settings并选择合适的django项目设置文件。


谢谢您的回答,但是这个设置已经为我的项目配置好了。 - RodrigoDela
2
这在我的情况下是问题所在。 - Ishan
别忘了在指向正确的settings.py文件后重新加载项目。 - ilyas Jumadurdyew
这个答案应该被指定为最佳答案。 - Redjam

11

事实证明,动态创建INSTALLED_APPS会在某种程度上让PyCharm感到困惑。如果这些应用是动态创建的话,它无法解决某些依赖关系,例如template_tags。看起来一个人必须决定是否拥有良好的代码导航或静态INSTALLED_APPS


你是对的:简单导入INSTALLED_APPS会让PyCharm疯狂。 - Nick Lesnykh
我目前遇到的问题是:将settings.py转换为一个模块(即文件夹名为settings,并包含__init__.py文件),并将旧的settings.py代码复制/粘贴到该文件夹中的另一个文件中,并正确计算BASE_DIR会让PyCharm完全疯掉->你被迫只能在一个文件settings.py中拥有所有配置,故事结束... - Olivier Pons
分离设置文件对我来说运行良好。我有一个带有 init.py、base.py、dev.py 和 prod.py 的设置模块。使用最新的 PyCharm 版本 2019,我能够通过将 PyCharm 指向我的 dev.py 设置文件来解决 OP 的问题。 - awaelchli

8

看起来PyCharm查找最后一个分配给INSTALLED_APPS的模板标签。我也遇到了类似的问题,并且通过在动态生成实际INSTALLED_APPS之后添加以下内容来解决它:

if False:
    INSTALLED_APPS = (
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.sites',
        'django.contrib.staticfiles',
        'autocomplete_light',
        'django.contrib.admin',
        'django.contrib.humanize',
        'comunes',
        'listados',
        'gescomercial',
        'contabilidad',
        'compras',
        'almacen')

虽然不太美观,但由于这个settings.py只用于开发机器,所以我可以接受它。


1
降低Django版本。我的情况和你的一样。设置中的配置是正确的,但仍然提示“未解决库‘静态文件’”。之后,我降低了Django版本。PIP安装Django == 2.1.7。问题已经解决。希望能对你有所帮助。

1
使用 PyCharm 2019.2,在 Django 首选项配置面板中正确指向 settings.py 后,我需要使缓存失效并重新启动,才能让 PyCharm 正确识别所有 templatetags 库,即使我的 INSTALLED_APPS 是动态构建的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接