ImportError:运行collectstatic时没有名为rest_framework的模块

时间:2020-06-05 04:38:16

标签: django python-3.x django-rest-framework pip

我发现许多问题都具有相同的错误,但是没有一个问题能够解决我的问题的实际原因,因此我将其发布了。我在(数字海洋)Linux生产服务器中遇到了这个问题。

我在virtualenv中具有python 3.5.2,在计算机中具有python2.7.12。 我已经使用命令pip install djangorestframework在virtualenv中安装了djangorestframework 但未将其安装在实际计算机上(2.7版)

venv中的python3正在运行,并且可以正常导入rest_framework:

(venv) myname@server:/www/site$ python
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import rest_framework
>>> exit()
计算机中的

python2正在运行,并且由于未安装而未导入rest_framework。

myname@server:/www/site$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import rest_framework
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named rest_framework
>>> exit()

在virtualenv中运行collectstatic命令时,出现以下错误。似乎是在python2.7中寻找软件包,而不是在virtualenv内部寻找。

(venv) myname@server:/www/site$ sudo python manage.py collectstatic
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 341, in execute
    django.setup()
  File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 27, 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 90, 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 rest_framework

我的要求是,该软件包是否也必须存在于venv之外的服务器计算机中? 如果是这样,为什么?并且我应该在py2.7的服务器上安装rest_framework吗?如果这样做,是否有可能破坏某些东西?

1 个答案:

答案 0 :(得分:0)

(venv)myname @ server:/ www / site $ sudo python manage.py collectstatic

问题在于此处使用sudo。它放弃了使用目标帐户的环境,因此放弃了您的虚拟环境。 如果要保留它,则可能应使用-E标志来保存环境:

(venv) myname@server:/www/site$ sudo -E python manage.py collectstatic

您也可以直接调用虚拟环境的python,这将使您不必预先设置可视环境:

 (venv) myname@server:/www/site$ which python
 <path-to-python>
 (venv) myname@server:/www/site$ sudo <path-to-python> manage.py collectstatic