【发布时间】:2020-06-05 04:38:16
【问题描述】:
我发现了许多具有相同错误的问题,但没有一个能够解决我的问题的实际原因,所以我发布了这个。我在我的(数字海洋)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吗?如果我这样做,它可能会破坏一些东西吗?
【问题讨论】:
-
你的
settings.py中有DEBUG=True吗? -
是的,设置为true。
-
你可能错误地在venv之外运行???
-
我在运行 collectstatic 命令之前激活了 venv。它的节目在这里激活-
(venv) myname@server:/www/site$ sudo python manage.py collectstatic -
因为你用 python3 创建了 venv
标签: django python-3.x django-rest-framework pip