Python

通過 Devstack 安裝 Tacker 時出現 Django 導入錯誤:沒有名為 django.core.management 的模組

  • January 9, 2020

我正在嘗試通過 Devstack安裝Tacker 。我正在遵循安裝指南。我使用與指南中相同的 local.conf 。但是,在執行 ./stack.sh 之後,我看到了這個錯誤:

已滿足要求:/usr/local/lib/python3.6/dist-packages 中的 pyperclip===1.7.0(來自 -c /opt/stack/requirements/upper-constraints.txt(第 453 行))
已滿足要求:/usr/local/lib/python3.6/dist-packages 中的 wcwidth===0.1.7(來自 -c /opt/stack/requirements/upper-constraints.txt(第 694 行))
已滿足要求:/usr/local/lib/python3.6/dist-packages 中的 zipp===0.6.0(來自 -c /opt/stack/requirements/upper-constraints.txt(第 716 行))
已滿足要求:/usr/local/lib/python3.6/dist-packages 中的 pycparser===2.19(來自 -c /opt/stack/requirements/upper-constraints.txt(第 438 行))
已滿足要求:/usr/local/lib/python3.6/dist-packages 中的 more-itertools===7.2.0(來自 -c /opt/stack/requirements/upper-constraints.txt(第 311 行))
安裝收集的包:Django、horizo​​n、tacker-horizo​​n
找到現有安裝:Django 2.2.7
解除安裝 Django-2.2.7:
成功解除安裝 Django-2.2.7
找到現有安裝:horizo​​n 17.0.1.dev8
無法解除安裝“地平線”。找不到要解除安裝的文件。
執行 setup.py develop for Horizo​​n
找到現有安裝:tacker-horizo​​n 0.15.1.dev2
無法解除安裝“tacker-horizo​​n”。找不到要解除安裝的文件。
為 tacker-horizo​​n 執行 setup.py develop
成功安裝 Django-2.0.13 地平線 tacker-horizo​​n
您使用的是 pip 版本 9.0.3,但版本 19.3.1 可用。
您應該考慮通過“pip install --upgrade pip”命令進行升級。
回溯(最近一次通話最後):
文件“/opt/stack/tacker-horizo​​n/manage.py”,第 18 行,在
從 django.core.management 導入 execute_from_command_line
ImportError:沒有名為 django.core.management 的模組
退出時出錯
nova-compute:未找到程序
neutron-dhcp-agent:找不到程序
neutron-l3-agent:找不到程序
中子元數據代理:未找到程序
neutron-openvswitch-agent:找不到程序
堆棧@ubuntu-nfv-1:~/devstack $

我在這裡使錯誤更加大膽:

文件“/opt/stack/tacker-horizo​​n/manage.py”,第 18 行,從 django.core.management import execute_from_command_line ImportError: No module named django.core.management 退出時出錯

我之前看到警告說考慮通過“pip install –upgrade pip”命令進行升級。我這樣做了,但我仍然看到同樣的錯誤。

每當我嘗試重新安裝時,我首先執行 ./unstack.sh 和 ./clean.sh 以確保安裝環境乾淨。

文件 /opt/stack/tacker-horizo​​n/manage.py 的第一行包括以下內容:

# !/usr/bin/env python

導入它們
導入系統

從 django.core.management 導入 execute_from_command_line
..

因此,根據這裡的故事,manage.py 應該沒問題。

我在 VMWare ESXi 中使用 Ubuntu 18.04 虛擬機。

如果有人能就這個問題給我建議,我將不勝感激。

這就是我解決問題的方法。根據這個問題的答案,我在 python 命令行中執行了“from django.core.management import execute_from_command_line”,我看到了同樣的錯誤。但是當我在 python3 命令行中執行相同的東西時,沒有給出錯誤。因此,很明顯 python3 在其站點封包件夾中確實有 Django,但 python 沒有。因此,我將 /opt/stack/tacker-horizo​​n/manage.py 中的 shebang 行“#!/usr/bin/env python”更改為“#!/usr/bin/env python3”。然後,我在執行./unstack.sh 之後,又執行了./stack.sh。現在安裝成功了。

看來您正在使用您正在使用不同的 python 發行版。請確保您使用的是 python3,並且 django 也安裝在 py3 發行版中。

dk@dk-VirtualBox:~/$ ll /usr/bin/python
lrwxrwxrwx 1 root root 9 Apr 16  2018 /usr/bin/python -> python2.7*
dk@dk-VirtualBox:~/$ cd /usr/bin/
dk@dk-VirtualBox:/usr/bin$ sudo rm python
dk@dk-VirtualBox:/usr/bin$ sudo ln -s python3.6 python
dk@dk-VirtualBox:/usr/bin$ ll /usr/bin/python
lrwxrwxrwx 1 root root 9 Jan  3 18:40 /usr/bin/python -> python3.6*

引用自:https://serverfault.com/questions/994651