2017-04-21 86 views
0

我最近安装了一个virtualenv并克隆了一个现有的django项目。当我运行python manage.py runserver,我发现了以下错误:django项目不能在virtualenv工作

Traceback (most recent call last): 
    File "manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "/Users/user/eb-virt/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line 
    utility.execute() 
    File "/Users/user/eb-virt/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/Users/user/eb-virt/lib/python2.7/site-packages/django/core/management/__init__.py", line 261, in fetch_command 
    klass = load_command_class(app_name, subcommand) 
    File "/Users/user/eb-virt/lib/python2.7/site-packages/django/core/management/__init__.py", line 69, in load_command_class 
    module = import_module('%s.management.commands.%s' % (app_name, name)) 
    File "/Users/user/eb-virt/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/Users/user/eb-virt/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 8, in <module> 
    from django.core.servers.basehttp import AdminMediaHandler, run, WSGIServerException, get_internal_wsgi_application 
    File "/Users/user/eb-virt/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 26, in <module> 
    from django.views import static 
    File "/Users/user/eb-virt/lib/python2.7/site-packages/django/views/static.py", line 95, in <module> 
    template_translatable = ugettext_noop(u"Index of %(directory)s") 
    File "/Users/user/eb-virt/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 75, in gettext_noop 
    return _trans.gettext_noop(message) 
    File "/Users/user/eb-virt/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 48, in __getattr__ 
    if settings.USE_I18N: 
    File "/Users/user/eb-virt/lib/python2.7/site-packages/django/utils/functional.py", line 184, in inner 
    self._setup() 
    File "/Users/user/eb-virt/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup 
    self._wrapped = Settings(settings_module) 
    File "/Users/user/eb-virt/lib/python2.7/site-packages/django/conf/__init__.py", line 95, in __init__ 
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e)) 
ImportError: Could not import settings 'application-name.settings' (Is it on sys.path?): No module named application-name.settings 

当我尝试做application-name/application python manage.py runserver,我得到以下错误:

python: can't open file 'manage.py': [Errno 2] No such file or directory

这里是应用程序目录

application-name/ 
    manage.py 
    application/ 
     __init__.py 
     urls.py 
     wsgi.py 
     settings.py 
+0

假设“应用程序名称”不是您的应用程序的名称(因为那是你的问题)?当前直接包含'application-name/settings.py'? – dhke

+0

这可能是问题的一部分。原来的django应用程序被命名为'应用程序'。当我将其克隆到virtualenv中时,我将其命名为“应用程序名称”。所以我应该改变它的应用程序名称/应用程序/ settings.py? – PCR

+0

我试过多次改变路径,但一直没有任何运气 – PCR

回答

0

首先,将您的application-name重命名为application_name。 Dashes和Python源代码只是引发问题,最好不要唤醒龙。

让我们假设你已经把它放在~/work/application_name之内,即在你的virtualenv之外。

如果您未使用virtualenvwrapper创建virtualenv并且它没有setup.py文件,请将其删除(并安装virtualenvwrapper)。

virtualenvwrapper创建您的virtualenv:

mkvirtualenv -a ~/work/application_name -r ~/work/application_name/requirements.txt eb_virt 

-a添加现有目录作为项目目录(把它放到蟒蛇路径上这个的virtualenv)。 -r运行pip install -r上的论点(我假设application_name/requirements.txt存在)。

除了使用-a选项(假设application_name/setup.py存在),你可以在开发模式下安装的软件包:

cd ~/work 
pip install -e application_name 

这些要么让〜/工作/ Python的当模块搜索路径的应用程序名称的一部分在跑。您的设置文件路径必须相对于Python模块搜索路径上的目录开始。

DJANGO_SETTINGS_MODULE环境变量因此应设置为'application.settings'

+0

感谢您的详细回复。我如何删除virtualenv? – PCR

+0

你只是从你的文件系统中删除它,假设你还没有创建任何你想保存的文件(你真的不应该自己创建任何文件)。 Virtualenvwrapper带有一个rmvirtualenv命令(以及更多用于使用virtuakenvs的便利)。 – thebjorn