" ImportError:无法导入Django"使用heroku,但不是在本地运行时

时间:2017-08-24 21:51:51

标签: python django heroku

尝试使用Heroku部署我的Django项目时遇到了一个奇怪的问题。

我一丝不苟地遵循了所有步骤,可以在这里找到:https://devcenter.heroku.com/articles/deploying-python#django-applications-on-heroku

现在,我正在迁移数据库的最后一步。为此,我运行

heroku run python manage.py migrate

导致异常错误"无法导入Django"

然而,当我跑

python manage.py migrate

一切正常。

我完全不知道为什么Django没有使用Heroku进行导入,并且经过几个小时的故障排除后无法解决问题。以下是我的代码:https://github.com/tonypedraza/luispedraza/tree/master/luispedraza

的回购

如果我能提供更多信息,请告诉我。

谢谢!!!!

1 个答案:

答案 0 :(得分:1)

我解决了这个问题。原来我在使用virtualenv时没有创建我的heroku应用程序。对于遇到类似问题的任何人,我通过运行以下代码发现了这一点:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, generics.collections, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    test: TList<integer>;
  public
    { Public declarations }
    procedure testGenerics(aList: TList<integer>);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  testGenerics(test);
  test.Sort;
  ShowMessage(test[0].tostring);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  test := TList<integer>.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  test.Free;
end;

procedure TForm1.testGenerics(aList: TList<integer>);
begin
  // FYI, a better way to exercise Sort()
  // would be to use RandomRange() instead
  // of a hard-coded number...
  aList.Add(4);
end;

end.

这向我展示了heroku指向系统目录中的依赖项,而不是我的virtualenv中的依赖项。要解决这个问题,我删除了应用程序并在我的virtualenv中创建了一个新应用程序。我确定你可以将sys.path更改为指向正确的目录,但我决定重启该项目,因为我刚刚启动它。