ImportError:无法导入Django

时间:2017-09-14 05:07:56

标签: django

我已经在pycharm中配置了virtualenv,当使用python manage.py命令时,显示错误:

E:\video course\Python\code\web_worker\MxOnline>python manage.py runserver
Traceback (most recent call last):
  File "manage.py", line 17, in <module>
    "Couldn't import Django. Are you sure it's installed and "
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

我应该如何修复它,我已经安装了django。

27 个答案:

答案 0 :(得分:11)

我认为使用django的最佳方式是使用virtualenv它是安全的,您可以在virtualenv中安装许多应用程序,这不会影响系统的任何外部空间 vitualenv使用默认版本的python,它与系统中的相同 安装virtualenv

sudo pip install virtualenv

或用于python3

sudo pip3 install virtualenv

然后在你的目录

  

mkdir~ / newproject

     

cd~ / newproject

现在,通过键入

在项目目录中创建一个虚拟环境
virtualenv newenv

要将软件包安装到隔离环境中,必须通过键入以下命令将其激活:

source newenv/bin/activate

现在安装

pip install django

您可以输入以下命令验证安装:

django-admin --version

要离开虚拟环境,您需要从系统的任何位置发出deactivate命令:

deactivate

答案 1 :(得分:2)

您需要安装Django,因为未安装django,因此出现此错误。

pip install django

答案 2 :(得分:2)

找到您的django父目录路径并将其添加到PYTHONPATH

在我的情况下,我的django父目录路径为/Library/Python/3.7/site-packages,将此行添加到〜/ .bash_profile

export PYTHONPATH=/Library/Python/3.7/site-packages

否则,如果您已经拥有PYTHONPATH,只需像这样添加它

export PYTHONPATH=${PYTHONPATH}:/Library/Python/3.7/site-packages

然后

source ~/.bash_profile

答案 3 :(得分:1)

我在这方面遇到了很大的困难,但是我解决了我的问题。我在我的virtualenv环境中使用Vagrant ssh的Windows 10上,我安装的盒子是ubuntu / xenial64,Django 2.1,python == 3.6。

当我安装软件包时,我使用的是pip3,但最重要的是,我使用sudo和-H标志来安装这些软件包。当我运行sudo pip3 freeze时,我的包裹会出现,但是当我运行普通的pip3 freeze时,将没有包裹。

然后,我尝试了python3 manage.py startapp <YOUR APP NAME>,但该错误与您的错误相同。

我终于想尝试sudo python3 manage.py startapp <YOUR APP NAME>终于成功了!

希望这对您有所帮助:)

答案 4 :(得分:1)

如果您不想使用virtualenv,则可以使用python3运行文件。python3 manage.py runserver

To install python3 look at this page

答案 5 :(得分:1)

在计算机上安装Django时,一切正常,但是在安装虚拟环境时,它与所有事物分离。当您完成最终项目并将其部署到任何云或托管中时,您就会知道它的重要性。

只需在虚拟环境和baam中重新安装Django:

pip install Django

然后只需运行命令进行测试:

python manage.py runsever

大功告成。

答案 6 :(得分:1)

我遇到了同样的问题,就我而言,这是因为除了Anaconda之外,我的机器上还有多个python版本。 在我的情况下,django与我的anaconda python配合不好。 我知道当我在所有版本的每个python终端上运行import django时。

作为总结,以下是我为解决此问题而采取的步骤:

  1. 以管理员身份运行CMD

  2. 创建项目文件夹。

  3. 在项目文件夹中为该新项目创建新的ENV ...

    pip install virtualenv >> virtualenv new_env`
    
  4. 激活它:

    .\new_env\Scripts\activate`
    
  5. 激活环境后⇒安装Django:

    python -m pip install Django
    

您在第5步中使用的python版本将确定哪个python将与此已安装的Django配合使用。

答案 7 :(得分:0)

我遇到了同样的问题,但我的解决方案未在此处发布:

我是如何得到错误的

每当我使用 requirements.txt 安装 pip 文件时都会出现错误(比如克隆 git 存储库)。

解决方案

我手动安装了 requirements.txt 中的每个模块 + 安装这些模块所需的任何其他模块(例如:我遇到了错误,有些模块缺少安装其他模块,所以我也必须添加它们).

答案 8 :(得分:0)

我在使用 Django 3 时遇到了这个问题。

manage.py 上详细介绍了 execute_from_command_line 导入。

你应该:

from django.core.management import execute_from_command_line

代替

from django import execute_from_command_line
 

答案 9 :(得分:0)

只需同步您的 pipenv 环境:

pipenv sync

答案 10 :(得分:0)

在激活虚拟环境后,该错误在 ubuntu 上出现。 我只需再次输入即可解决此问题:

pip3 install Django

在目录中,我想创建一个新的应用程序。

答案 11 :(得分:0)

要为您的项目创建虚拟环境,请打开一个新的命令提示符,导航到您要创建项目的文件夹,然后输入以下内容:

<块引用>

py -m venv 项目名称 如果它不存在并设置虚拟环境,这将创建一个名为“project-name”的文件夹。要激活环境,请运行: 项目名称\脚本\激活.bat**

虚拟环境将被激活,您将在命令提示符旁边看到“(项目名称)”来指定它。每次启动新的命令提示符时,您都需要再次激活环境。

安装 Django

可以在您的虚拟环境中使用 pip 轻松安装 Django。

在命令提示符下,确保您的虚拟环境处于活动状态,然后执行以下命令:

<块引用>

py -m pip 安装 Django

答案 12 :(得分:0)

我遇到了同样的问题,我安装了所有具有root访问权限的依赖项:

在您的情况下:

sudo pip install django

就我而言,我在requirements.txt中拥有所有依赖项,所以:

sudo pip3 install -r requirements.txt

答案 13 :(得分:0)

问题与以下错误有关: 执行策略更改

通过运行以下命令启动virtualenv:

命令行 C:\用户\名称\ yourdjango文件名> myvenv \脚本\激活

注意:在Windows 10上,Windows PowerShell可能会收到错误消息,指出在此系统上禁用了这些方案的实现。在这种情况下,请使用“以管理员身份运行”选项打开另一个Windows PowerShell。之后,在启动虚拟环境之前尝试键入以下命令:

C:\ WINDOWS \ system32> 设置执行策略远程签名

执行策略更改: 执行策略有助于保护您免受不信任的脚本的侵害。更改执行策略可能会使您面临http://go.microsoft.com/fwlink/?LinkID=135170的about_Execution_Policies帮助主题中所述的安全风险。

是否要更改执行策略? [Y]是[A]对所有人[N]否[L]对所有人[S]暂停[?]帮助(默认为“ N”):A

选择Y(es)之后,关闭Powershell管理员窗口,然后返回到Powershell窗口(出现错误)并再次运行命令。

> myenv \ Scripts \ activate ,然后 python manage.py runserver 8085

(8085或任何数字,如果您想更改其默认端口即可使用,否则无需指出任何内容。)

答案 14 :(得分:0)

如果您不想停用或激活已安装的venv,只需确保已设置pythonpath即可

设置pythonpath = C:\ software \ venv \ include; C:\ software \ venv \ lib; C:\ software \ venv \ scripts; C:\ software \ venv \ tcl; C:\ software \ venv \ Lib \ site-packages;

然后执行

“%pythonpath%”%venvpath%Scripts \ mytestsite \ manage.py运行服务器“%ipaddress%”:8000

答案 15 :(得分:0)

  1. 检查是否已安装Django;通过在Python中执行import django。 如果一切正常,您就不会看到ModuleNotFoundError

  2. 检查是否已安装virtualenv;通过执行virtualenv --version。 如果一切正常,您必须看到版本号。

  3. 检查是否已启用virtualenv;在命令提示符起始行中必须有virtualenv的名称。通过启用它 source bin/activate。另外,每次工作时,请记住deactivate 完成了virtualenv。

    my terminal changes after enabling virtualenv

  4. 您的virtualenv包含django。默认情况下是virtualenv 没有安装模块。您要么必须在您的计算机中安装django virtualenv(即使您已经将其安装在计算机中)也可以使用 virtualenv --system-site-packages在创建虚拟环境时要 在virtualenv中包含系统站点软件包。

  5. 将django添加到您的路径。打开python import django,然后运行 django查看Django的路径。然后将其添加到您的~/.bashrc(或 ~/.zshrc(如果您使用的是zsh)。 here

  6. 中的更多信息
  7. 通过运行django-admin

  8. 安装pip install django-admin

答案 16 :(得分:0)

在Windows 10中使用anaconda时,我也面临相同的问题 对我来说anaconda3\Scripts>activate

效果很好。您所需要做的只是去anaconda家

  

AppData \ Local \ Continuum \ anaconda3 \ Scripts

,您需要打开一个cmd提示符并键入激活。

它将为您激活venv。

答案 17 :(得分:0)

您需要转到根目录 并运行以下命令

source bin/activate

执行上述命令后,您将能够创建自定义应用

答案 18 :(得分:0)

windows:

  1. (virtualenv目录)\ Scripts \ activate#此步骤可激活virtualenv

  2. 您应该位于(项目名称)的目录中

  3. python manage.py runserver

答案 19 :(得分:0)

如果您在没有权限访问所有文件的机器上工作,并且您有两个版本,例如默认2.7和最新的3.6,则在运行该命令时,请在命令中使用python版本。如果sudo安装了最新的python,请使用sudo运行命令。

exp:


var margins = {
  top: 20,
  left: 50,
  bottom: 20,
  right: 20
};

var width = 300;
var arcSize = (6 * width) / 100;
var innerRadius = arcSize * 3;

var extent = 1800;

var data2 = [
  [
    {
      value: (231 / extent) * 100,
      marker: 231,
      label: "Collective",
      color: "#b8cce4",
      neg: false
    },
    {
      value: (233 / extent) * 100,
      marker: 233,
      label: "Targeted",
      color: "#95b3d7",
      neg: false
    },
    {
      value: (45 / extent) * 100,
      marker: 45,
      label: "Specific",
      color: "#4f81b9",
      neg: false
    }
  ],

  [
    {
      value: (171 / extent) * 100,
      marker: 171,
      label: "Collective",
      color: "#b8cce4",
      neg: false
    },
    {
      value: (1712 / extent) * 100,
      marker: 1712,
      label: "Targeted",
      color: "#95b3d7",
      neg: false
    },
    {
      value: (1 / extent) * 100,
      marker: 1,
      label: "Specific",
      color: "#4f81b9",
      neg: false
    }
  ],

  [
    {
      value: (207 / extent) * 100,
      marker: 207,
      label: "Collective",
      color: "#b8cce4",
      neg: false
    },
    {
      value: (975 / extent) * 100,
      marker: 975,
      label: "Targeted",
      color: "#95b3d7",
      neg: false
    },
    {
      value: (153 / extent) * 100,
      marker: 153,
      label: "Specific",
      color: "#4f81b9",
      neg: false
    }
  ]
];

var svg = d3
  .select("body")
  .append("svg")
  .attr("width", 1100 + 100)
  .attr("height", 1100 + 100);

var graphGroup = svg
  .append("g")
  .attr("transform", "translate(" + margins.left + "," + margins.top + ")");

for (var j = 0; j < data2.length; j++) {
  var data = data2[j];

  var arcs = data.map(function(obj, i) {
    return d3.svg
      .arc()
      .innerRadius(i * arcSize + innerRadius)
      .outerRadius((i + 1) * arcSize - width / 100 + innerRadius);
  });
  var arcsGrey = data.map(function(obj, i) {
    return d3.svg
      .arc()
      .innerRadius(i * arcSize + (innerRadius + (arcSize / 2 - 2)))
      .outerRadius((i + 1) * arcSize - arcSize / 2 + innerRadius);
  });

  var pieData = data.map(function(obj, i) {
    return [
      {
        value: obj.value * 0.75,
        arc: arcs[i],
        object: obj
      },
      {
        value: (100 - obj.value) * 0.75,
        arc: arcsGrey[i],
        object: obj
      },
      {
        value: 100 * 0.25,
        arc: arcs[i],
        object: obj
      }
    ];
  });

  var pie = d3.layout
    .pie()
    .sort(null)
    .value(function(d) {
      return d.value;
    });

  var g = graphGroup
    .selectAll(null)
    .data(pieData)
    .enter()
    .append("g")
    .attr(
      "transform",
      "translate(" + (width / 2 + j * 300) + "," + width / 2 + ") rotate(180)"
    );

  const arcGroup = g
    .selectAll(".group-arc")
    .data(d => pie(d))
    .enter()
    .append("g")
    .attr("class", "group-arc");

  arcGroup
    .append("path")
    .attr("id", function(d, i) {
      if (i == 1) {
        return "Text" + d.data.object.label;
      }
    })
    .attr("d", function(d) {
      return d.data.arc(d);
    })
    .attr("fill", function(d, i) {
      if (d.data.object.neg == false) {
        return i == 0 ? d.data.object.color : i == 1 ? "#D3D3D3" : "none";
      } else {
        return i == 0 ? "red" : i == 1 ? "#D3D3D3" : "none";
      }
    });

 arcGroup.call(elem => {
    elem.forEach(arcGr => {
      const { parentNode } = arcGr;
      const groupAdd = d3.select(parentNode);
      const arcData = d3.select(arcGr[0]).data();

      groupAdd
        .append("text")
        .attr("alignment-baseline", "middle")
        .text(d => d[0].object.label)
        .attr("transform", d => {
          var centroidText = arcData[0].data.arc.centroid({
            startAngle: arcData[0].startAngle,
            endAngle: arcData[0].startAngle
          });
          console.log(centroidText);
          return `translate(${centroidText.join(",")})rotate(180)`;
        });

      groupAdd
        .append("text")
        .text(d => d[1].object.marker)
        .attr("alignment-baseline", "hanging")
        .attr("text-anchor", "end")
        .attr("dx", "-2")
        .attr("transform", d => {
          var path = arcData[0].data.arc(arcData[0]);
          var coords = path.split("L")[1].split("A")[0];
          return `translate(${coords})rotate(180)rotate(${(arcData[0].endAngle *
            180) /
            Math.PI})`;
        });
    });
  });


/** 
  //Previous version

  arcGroup
    .append("text")
    .text(function(d, i) {
      var lableObj = d.data.object;
      if (i === 0) {
        return lableObj.label;
      } else if (i === 1) {
        if (lableObj.neg === true) {
          return "-" + lableObj.marker;
        } else {
          return lableObj.marker;
        }
      }
    })
    .attr("transform", (d, i) => {
      var centroidText = d.data.arc.centroid({
        startAngle: d.startAngle,
        endAngle: d.startAngle
      });
      return (
        "translate(" +
        (centroidText[0] - (1.5 * width) / 100) +
        "," +
        (centroidText[1] + ") rotate(" + 180 + ")")
      );
    });
*/

}

答案 20 :(得分:0)

使用runserver命令时,您似乎尚未激活virtualenv。

Windows:<virtualenv dir>\Scripts\activate.bat

Linux:source <virtualenv dir>\bin\activate

您应该看到(virtualenv的名称)作为当前目录的前缀:

(virtualenv) E:\video course\Python\code\web_worker\MxOnline>python manage.py runserver

答案 21 :(得分:0)

启动项目时,您无需访问新创建的虚拟环境,而只需访问最初创建的虚拟环境。

您只需要在命令行中执行以下操作:

1)readLen, err := io.ReadAtLeast(rand.Reader, buff, buffLen) fmt.Println(buff) 访问您最初创建的后端虚拟环境。

2)然后,pipenv shell

让我知道它是否对您有用。

答案 22 :(得分:0)

我以完全不同的方式解决了这个问题。

Package installer = Conda (Miniconda)
List of available envs = base, djenv(Django environment created for keeping project related modules).

当我使用命令行通过conda activate djenv激活djenv时,基本环境已被激活。我没有注意到,当激活djenv时,(djenv)会显示在命令行提示的开头。当我累死执行python manage.py migrate时,发生了这种情况。
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

我停用了当前环境,即conda deactivate。这停用了djenv。然后,我停用了base环境。
之后,我再次激活了djenv。该命令就像一个魅力!

如果有人遇到类似的问题,希望您也考虑尝试此操作。也许有帮助。

答案 23 :(得分:0)

您需要同时使用两个命令: pip install django和pip3 install django 对我有用

答案 24 :(得分:0)

当我在Windows 10上执行此操作时遇到了同样的问题。问题可能是环境变量中没有为manage.py定义路径。我做了以下步骤,这对我来说很有用!

  1. 转到“开始”菜单并搜索manage.py。
  2. 右键单击它并选择“复制完整路径”。
  3. 转到“我的电脑”或“此电脑”。
  4. 右键单击并选择“属性”。
  5. 选择高级设置。
  6. 选择“环境变量”。
  7. 在下方窗口中,找到“路径”,单击它并单击“编辑”。
  8. 最后,点击“添加新”。
  9. 使用CTRL-V粘贴复制的路径。
  10. 单击“确定”,然后以管理员权限重新启动CMD。
  11. 我真的希望它有效!

答案 25 :(得分:0)

如果您已激活虚拟环境,安装了django,django-admin --version将打印有效版本 - 检查您正在执行的文件中是否没有循环导入。

答案 26 :(得分:-1)

如果您使用的是python 3,请在cmd代码之前使用py

py manage.py runserver