ImportError: No module named crispy-forms

ImportError: No module named crispy-forms

我正在开发一些 django 应用程序,但还是菜鸟。想使用 crispy-forms,但是 eclipse 和 django 不识别它。

正在尝试运行服务器或 shell:

$ python manage.py runserver

发生这种情况:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 354, in execute
    django.setup()
  File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/usr/local/lib/python2.7/dist-packages/django/apps/config.py", line 87, in create
    module = import_module(entry)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named crispy-forms

这是我最近在 views.py 旁边添加到站点文件夹的 forms.py,它抱怨 crispy_forms 的导入未解决...:[=​​18=]

from django.contrib.auth.forms import UserCreationForm
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, ButtonHolder, Submit
from wx.lib.pubsub.core import kwargs

class RegistrationForm(UserCreationForm):
    def __init__(self, *args, **kwargs):
        super(RegistrationForm, self).__init__(*args, **kwargs)

        self.helper = FormHelper()
        self.helper.layout = Layout(
            'username',
            'password1',
            'password2',
            ButtonHolder(
                Submit('register', 
                       'Register', 
                       css_class='btn-prima'
                )
            )
        )

这是我的一部分 settings.py:

    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'polls',
        'crispy-forms',
    )

...
CRISPY_TEMPLATE_PACK = 'bootstrap'

我是 运行 virtualenv,我的 venv-dir 是这样的:

venv/bin$ ls -la
total 2916
drwxr-xr-x 3 nr1 nr1    4096 Feb 17 11:24 .
drwxr-xr-x 6 nr1 nr1    4096 Feb 16 19:38 ..
-rw-r--r-- 1 nr1 nr1    2220 Feb 16 19:35 activate
-rw-r--r-- 1 nr1 nr1    1276 Feb 16 19:35 activate.csh
-rw-r--r-- 1 nr1 nr1    2489 Feb 16 19:35 activate.fish
-rw-r--r-- 1 nr1 nr1    1137 Feb 16 19:35 activate_this.py
-rwxr-xr-x 1 nr1 nr1     300 Feb 16 19:44 django-admin
-rwxr-xr-x 1 nr1 nr1     159 Feb 16 19:44 django-admin.py
-rw-r--r-- 1 nr1 nr1     304 Feb 16 19:44 django-admin.pyc
-rwxr-xr-x 1 nr1 nr1     267 Feb 17 11:24 easy_install
-rwxr-xr-x 1 nr1 nr1     267 Feb 17 11:24 easy_install-2.7
drwxr-xr-x 7 nr1 nr1    4096 Feb 16 19:47 .git
-rwxr-xr-x 1 nr1 nr1    2364 Feb 17 00:13 pilconvert.py
-rwxr-xr-x 1 nr1 nr1   15631 Feb 17 00:13 pildriver.py
-rwxr-xr-x 1 nr1 nr1    2609 Feb 17 00:13 pilfile.py
-rwxr-xr-x 1 nr1 nr1    1055 Feb 17 00:13 pilfont.py
-rwxr-xr-x 1 nr1 nr1    2410 Feb 17 00:13 pilprint.py
-rwxr-xr-x 1 nr1 nr1     239 Feb 17 11:24 pip
-rwxr-xr-x 1 nr1 nr1     239 Feb 17 11:24 pip2
-rwxr-xr-x 1 nr1 nr1     239 Feb 17 11:24 pip2.7
-rwxr-xr-x 1 nr1 nr1 2884984 Feb 17 11:24 python
lrwxrwxrwx 1 nr1 nr1       6 Feb 17 11:24 python2 -> python
lrwxrwxrwx 1 nr1 nr1       6 Feb 17 11:24 python2.7 -> python
-rwxr-xr-x 1 nr1 nr1    3886 Feb 17 00:11 sqlformat

我不小心输入了: 点安装 python 今天,它似乎做到了。这对它有什么影响吗?我的意思是,确保没有软件冲突不是 virtualenv 的任务吗?

无论如何,在我解决这个问题之前,我现在无法进行任何 Django 工作,有什么帮助吗?

更新 1 变化:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls',
    'crispy_forms',
)

$ python manage.py runserver

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 354, in execute
    django.setup()
  File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/usr/local/lib/python2.7/dist-packages/django/apps/config.py", line 87, in create
    module = import_module(entry)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named crispy_forms


$ cat requirements.txt 
Django==1.7.4
django-crispy-forms==1.4.0
django-debug-toolbar==1.2.2
django-extras==0.3
django-grappelli==2.6.3
django-haystack==2.3.1
django-reversion==1.8.5
django-tastypie==0.12.1
easy-thumbnails==2.2
Pillow==2.7.0
python-dateutil==2.4.0
python-mimeparse==0.1.4
requests==2.5.1
six==1.9.0
sqlparse==0.1.14

更新 2:安装新的 django 项目、新的 virtualenv、所有新的..同样的事情发生了

(abc)nr1@kali:~/workspace/websites/abc$ pip 安装 django-crispy-forms 收集 django-crispy-forms 使用缓存的 django-crispy-forms-1.4.0.tar.gz 安装收集的包:django-crispy-forms 运行 setup.py 安装 django-crispy-forms 成功安装 django-crispy-forms-1.4.0

(abc)nr1@kali:~/workspace/websites/abc$ python manage.py runserver
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/nr1/Envs/abc/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/home/nr1/Envs/abc/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
    django.setup()
  File "/home/nr1/Envs/abc/local/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/nr1/Envs/abc/local/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/home/nr1/Envs/abc/local/lib/python2.7/site-packages/django/apps/config.py", line 123, in create
    import_module(entry)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named crispy_forms

我现在尝试将 crispy_forms 安装到一个完整的项目中,查看我的 virtualenv,我看到它在那里:

nr1@kali:~/Envs/abc/local/lib/python2.7/site-packages$ ls -la
total 56
drwxr-xr-x 12 nr1 nr1 4096 Feb 17 21:50 .
drwxr-xr-x  4 nr1 nr1 4096 Feb 17 20:31 ..
drwxr-xr-x  5 nr1 nr1 4096 Feb 17 21:50 crispy_forms
drwxr-xr-x 17 nr1 nr1 4096 Feb 17 20:40 django
drwxr-xr-x  2 nr1 nr1 4096 Feb 17 20:40 Django-1.7.4.dist-info
drwxr-xr-x  2 nr1 nr1 4096 Feb 17 21:50 django_crispy_forms-1.4.0-py2.7.egg-info
-rw-r--r--  1 nr1 nr1  126 Feb 17 20:31 easy_install.py
-rw-r--r--  1 nr1 nr1  315 Feb 17 20:31 easy_install.pyc
drwxr-xr-x  2 nr1 nr1 4096 Feb 17 20:31 _markerlib
drwxr-xr-x 10 nr1 nr1 4096 Feb 17 20:31 pip
drwxr-xr-x  2 nr1 nr1 4096 Feb 17 20:31 pip-6.0.8.dist-info
drwxr-xr-x  4 nr1 nr1 4096 Feb 17 20:31 pkg_resources
drwxr-xr-x  4 nr1 nr1 4096 Feb 17 20:31 setuptools
drwxr-xr-x  2 nr1 nr1 4096 Feb 17 20:31 setuptools-12.0.5.dist-info

所以,很清楚。 Django 甚至不承认它安装了它。这个怎么可能?? virtualenv 说它在那里,但 django 看不到它??? wx...

您必须确保将 crispy-forms 安装到 virtualenv 中。

  1. 激活 VirtualEnv(其中 env 是您的虚拟环境的 directory/name):
source env/bin/activate
  1. 安装 crispy-forms
pip install django-crispy-forms

根据文档:http://django-crispy-forms.readthedocs.org/en/latest/install.html#installing-django-crispy-forms,您必须将 'crispy_forms' 而不是 'crispy-forms' 添加到已安装的应用程序列表中。

好的,所以我偶然(几乎)找到了另一个 post,这个:Getting stuck at Django error: No module named registration

并认为它可能与 pythonpath 有关。

所以我尝试了 easy_install,就像建议的那样:

 $ easy_install -Z django-crispy-forms
    Searching for django-crispy-forms
    Best match: django-crispy-forms 1.4.0
    Adding django-crispy-forms 1.4.0 to easy-install.pth file

    Using /home/nr1/Envs/abc/lib/python2.7/site-packages
    Processing dependencies for django-crispy-forms
    Finished processing dependencies for django-crispy-forms

现在可以了! 我仍然认为 pythonpath 可能缺少某些东西,因为我在 eclipse 中一直得到这个:

SignUpView Found at: __module_not_in_the_pythonpath__

,我希望有人能澄清一下,所以请随时在这里贡献...

但 django 和 crispy_forms 现在可以一起工作了。 YippikayeyMF!!

我将 PyCharm 用于我的 Django 项目。我得到与你完全相同的错误,但在 PyCharm 中,直到我更改了 PyCharm 为项目使用的 Python 解释器。对于每个项目,我必须 select 驻留在相关 virtalenv 文件夹中的 Python 解释器才能让 IDE (PyCharm) 识别已安装的模块。我怀疑 Python 路径隐藏在后台某处...

Eclipse 不允许您select 解释器用于项目吗?那就是我开始寻找的地方。

祝你好运!

我遇到了同样的问题并找到了替代方法。

  1. 退出 Virtualenv。
  2. 在根目录中重新安装 crispy form。
  3. 返回 Virtualenv 并进行迁移,然后进行迁移。

我认为 django 安装需要在虚拟环境内外安装所有第三方应用程序。
如果有人能帮助我了解原因背后的内部细节,我将不胜感激。

以上所有答案都遗漏了一件事。在执行上述任何建议之前,请先交叉检查 'External Libraries' 在驱动器上的位置。 原因: - 您使用的 IDE 指向不同的 python 目录,适用于多次安装 python 的人。

  • 如果您的 'External Libraries' 已存储,请不要认为您的 'virtualenv' 指向正确的目录。因此,如果您继续安装到错误的目录中,那么这样的错误就可以了

我现在解决了这个问题,我意识到 crispy-form 安装版本是 python 2.7 版本,但我使用的是 Django-1.10 和 Python 3.5,我想这也是你的问题。

尝试:pip3 install --user django-crispy-forms

您的 django 项目正在寻找脆皮形式 module.There 可能是由于版本不同而没有较早安装。

如果您使用的是虚拟环境,我建议您在激活虚拟环境后需要安装 django -crispy-forms。

要安装它,请使用命令: pip 安装 django-crispy-forms

我在 settings.py

中使用 crispy-forms 而不是 crispy_forms

以下是要使 crispy 表单正常工作所需要做的事情的概述:

pip install django-crispy-forms

在 settings.py 个安装的应用程序中添加 crispy_forms 在 settings.py 添加 CRISPY_TEMPLATE_PACK = 'bootstrap4'

在 settings.py

已安装的应用程序中将 crispy-forms 更改为 crispy_forms

激活虚拟环境后,假设您使用的是 python 版本 3,请尝试:

python3 -m pip install django-crispy-forms

我遇到了同样的错误,我所要做的就是运行服务器使用 python3 manage.py runserver。我不确定它是如何工作的,但我认为某些模块需要您显式调用 python3 而不仅仅是别名。

我刚刚解决了这个问题,但在任何地方都找不到解决方案。 如果您没有正确配置 crispy-forms,就会出现此错误,请务必检查您使用的版本。 另一个对我有用的 - 我配置了一切完美,但没有注意到我配置的项目和应用程序的一些小问题。 把整个过程再走一遍,就万事大吉了。

对我来说,我只需要更新 python 版本就解决了问题。我正在使用 python 3.9 ,但后来我卸载了它并安装了 python 3.10 并且在卸载以前的版本后安装了最新版本的django。

注意:不要忘记在进行更改后更改环境变量!

pip安装crispy-forms库后,在installed_apps中添加crispy_forms。我的问题出在 forms.py,我的 VScode 编辑器无法识别 crispy_forms.helper。解决方案 - 我只是关闭我的编辑器然后再次打开,现在它被识别了。