首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ImportError:没有名为“ImportError”的模块

ImportError:没有名为“ImportError”的模块
EN

Stack Overflow用户
提问于 2017-08-05 20:39:29
回答 1查看 15.8K关注 0票数 2

我安装了两个版本的python,分别安装了2.7和3.4,并创建了一个虚拟环境,并将python34分配给了那个新环境。当我激活这个virtualenv并运行python manage.py runserver时,我会得到以下输出。

代码语言:javascript
运行
复制
(casenv) C:\pyprojects\focus\site>python manage.py runserver
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "C:\virtualenvs\casenv\lib\site-packages\django\core\management\__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "C:\virtualenvs\casenv\lib\site-packages\django\core\management\__init__.py", line 341, in execute
    django.setup()
  File "C:\virtualenvs\casenv\lib\site-packages\django\__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\virtualenvs\casenv\lib\site-packages\django\apps\registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "C:\virtualenvs\casenv\lib\site-packages\django\apps\config.py", line 199, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\virtualenvs\casenv\lib\importlib\__init__.py", line 104, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 2231, in _gcd_import
  File "<frozen importlib._bootstrap>", line 2214, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2203, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1129, in _exec
  File "<frozen importlib._bootstrap>", line 1448, in exec_module
  File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
  File "C:\pyprojects\focus\site\general\models.py", line 8, in <module>
    from focus2.util import HashedPk
  File "C:\pyprojects\focus\site\focus2\util.py", line 3, in <module>
    from settings import Hasher
ImportError: No module named 'settings'

文件- manage.py

代码语言:javascript
运行
复制
#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "focus2.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError:
        # The above import may fail for some other reason. Ensure that the
        # issue is really that Django is missing to avoid masking other
        # exceptions on Python 2.
        try:
            import django
        except ImportError:
            raise 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?"
            )
        raise
    execute_from_command_line(sys.argv)

来自utils.py的前2行--

代码语言:javascript
运行
复制
from django.utils.html import strip_tags, escape
from settings import Hasher

项目目录结构为

代码语言:javascript
运行
复制
├───focus
│   ├───data_dumps
│   ├───notes
│   ├───setup
│   └───site(main project folder)
|       └───static
|       └───general
|       └───pro
|           └───models
|               +--__init__.py
|               +--plans.py
│       └───focus2
│           └───templates
|           +--__init__.py
│           +--settings.py
│           +--util.py            
│           +--wsgi.py
│       +--manage.py

我有相同的代码和dir结构,在virtualenv python2.7上运行得很好。mysql env和mysql的不同之处在于我在27中安装了mysql- python27模块,在34中安装了mysql- python34模块。

python34环境中的Pip冻结命令。

代码语言:javascript
运行
复制
(casenv) C:\virtualenvs\casenv>pip freeze
certifi==2017.7.27.1
chardet==3.0.4
defusedxml==0.5.0
Django==1.10.1
django-ajax-selects==1.5.0
django-allauth==0.32.0
django-crispy-forms==1.6.1
easy-thumbnails==2.3
hashids==1.1.0
idna==2.5
lxml==3.7.3
mysqlclient==1.3.10
oauthlib==2.0.2
Pillow==3.3.1
PyMySQL==0.7.11
python3-openid==3.1.0
requests==2.18.3
requests-oauthlib==0.8.0
urllib3==1.22

来自python27 virtualenv的Pip freeze命令。在运行这个venv时,我没有得到任何错误。

代码语言:javascript
运行
复制
(testvenv27) C:\virtualenvs\testvenv27>pip freeze
Django==1.10.1
django-ajax-selects==1.5.0
django-allauth==0.27.0
django-crispy-forms==1.6.0
easy-thumbnails==2.3
hashids==1.1.0
lxml==3.4.2
MySQL-python==1.2.5
oauthlib==2.0.0
Pillow==3.3.1
python-openid==2.2.5
requests==2.9.1
requests-oauthlib==0.6.1

sys.path命令输出--

代码语言:javascript
运行
复制
>>> import sys
>>> print(sys.path)
['', 'C:\\WINDOWS\\SYSTEM32\\python34.zip', 'C:\\virtualenvs\\casenv\\DLLs', 'C:\\virtualenvs\\casenv\\lib', 'C:\\virtualenvs\\casenv\\Scripts', 'c:\\python34\\Lib', 'c:\\python34\\DLLs', 'C:\\virtualenvs\\casenv', 'C:\\virtualenvs\\casenv\\lib\\site-packages']

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-05 21:13:37

尝试:

代码语言:javascript
运行
复制
from .settings import Hasher
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45522004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档