manage.py - 导入错误:没有名为django的模块

7 投票
4 回答
41145 浏览
提问于 2025-04-18 08:42

我刚把一个在Windows系统上运行的django应用程序迁移到了Ubuntu,只是简单地把所有文件复制到了 /var/www/some/dir/djangoApp。但是现在,当我执行

python manage.py runserver 8080

时,出现了错误:

ImportError: no module named django

我已经用 python setup.py install 安装了一个新的django版本,安装路径是 /usr/local/lib/python2.7/dist-packages/django/,并且把这个路径添加到了PYTHONPATH中。

这个Linux系统不是我维护的,里面安装了很多不同版本的Python。

在命令行中输入 >>> import django 并没有出现导入错误。

我感到很困惑。请帮帮我!

这是控制台的错误追踪信息:

Traceback (most recent call last):
  File "manage.py", line 13, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 280, in execute
    translation.activate('en-us')
  File "/usr/local/lib/python2.7/dist-packages/django/utils/translation/__init__.py", line 130, in activate
    return _trans.activate(language)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/translation/trans_real.py", line 188, in activate
    _active.value = translation(language)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/translation/trans_real.py", line 177, in translation
    default_translation = _fetch(settings.LANGUAGE_CODE)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/translation/trans_real.py", line 159, in _fetch
    app = import_module(appname)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
ImportError: No module named django

4 个回答

0

看起来这个问题的解决方法可能挺复杂,但实际上问题可能很简单。

我也遇到过同样的问题,前一天还好好的,第二天就不行了。我对Linux和Django还很陌生,但对Python比较熟悉,所以除了“虚拟环境”之外,不知道该去哪里找答案。

我开始重新安装虚拟环境(像有些人建议的那样),但其实不要这样做!

至少在你试过这个方法之前,不要急着安装:

你有没有把虚拟环境安装成临时的?(你是不是这样安装的:“pip install pipenv”?)

如果你是这样做的(其实应该这样做),那么在你当前的Django项目文件夹里会有两个文件 - pipfilepipfile.lock

打开你的终端,进入这两个文件所在的文件夹(同一个文件夹)。

在终端里输入:pipenv shell

哇!你刚刚重新激活了你的“临时”虚拟环境,Django就会像之前那样正常工作。

0

我在遇到同样的错误后找到了这个页面(我在一个已经开发了几个月的网站上,之前一切都很好)。对我来说,@asaji的回答让我想起我忘记启动我的虚拟环境了。

启动我的虚拟环境后,使用命令. Scripts/activate,一切都正常了!

2

有时候在文件夹里会出现一些 .pyc 文件,但你在控制台上不会看到任何错误。这是在用 pip 安装 Django 的时候遇到的情况。

sudo pip install django

最佳做法是创建一个 requirements.txt 文件(从你的 Windows 安装中获取)

pip freeze > requirements.txt

然后创建一个新的虚拟环境来安装每一个包

mkvirtualenv  myapp
pip install -r requirements.txt 
8

既然你刚刚迁移到UNIX环境,我建议你也要遵循这个平台上的最佳实践。

  1. 首先,下载PIP,这是一个用来管理Python包的工具。

    sudo apt-get install python-pip

  2. 接下来,下载并安装virtualenv,这样可以为你的应用设置一个独立的Python虚拟环境。这样你就可以在不冲突的情况下运行不同版本的Django和其他软件。

    sudo pip install virtualenv

  3. 然后,创建一个虚拟环境。执行这个命令后,你会得到一个名为myvirtualenvironment的文件夹,里面有一个bin文件夹和一些可执行文件。

    virtualenv myvirtualenvironment --no-site-packages

  4. 为了让你的命令行知道你正在使用这个新创建的虚拟环境,你需要运行位于 /myvirtualenvironment/bin/ 的激活脚本。

    source myvirtualenvironment/bin/activate

  5. 现在,你可以在这个虚拟环境中专门安装Django了。

    pip install django 或者 pip install django==1.6,具体取决于你想安装哪个版本。如果不指定,默认会安装最新版本。

  6. 最后,把你的Django项目迁移到 /myvirtualenvironment/ 里面,然后运行runserver命令。

撰写回答