2015-02-23 77 views
3

我想在python3上设置django在dreamhost上。dreamhost python3 Django乘客设置导入Cookie

我已经建立了一个virtualenv,并记录下来并安装了所有先决条件。我得到了runserver工作

问题出现在乘客设置。错误日志显示我无法导入名为Cookie的模块,导致出现更多错误。

这是回溯:

File "/home/user/path/env/lib/python3.4/imp.py", line 171, in load_source 
    module = methods.load() 
    File "<frozen importlib._bootstrap>", line 1220, in load 
    File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked 
    File "<frozen importlib._bootstrap>", line 1129, in _exec 
    File "<frozen importlib._bootstrap>", line 1471, in exec_module 
    File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed 
    File "passenger_wsgi.py", line 17, in <module> 
    from django.core.wsgi import get_wsgi_application 
    File "/home/user/path/env/lib/python3.4/site-packages/django/core/wsgi.py", line 2, in <module> 
    from django.core.handlers.wsgi import WSGIHandler 
    File "/home/user/path/env/lib/python3.4/site-packages/django/core/handlers/wsgi.py", line 11, in <module> 
    from django import http 
    File "/home/user/path/env/lib/python3.4/site-packages/django/http/__init__.py", line 1, in <module> 
    from django.http.cookie import SimpleCookie, parse_cookie 
    File "/home/user/path/env/lib/python3.4/site-packages/django/http/cookie.py", line 5, in <module> 
    from django.utils.six.moves import http_cookies 
    File "/home/user/path/env/lib/python3.4/site-packages/django/utils/six.py", line 90, in __get__ 
    result = self._resolve() 
    File "/home/user/path/env/lib/python3.4/site-packages/django/utils/six.py", line 113, in _resolve 
    return _import_module(self.mod) 
    File "/home/user/path/env/lib/python3.4/site-packages/django/utils/six.py", line 80, in _import_module 
    __import__(name) 
    File "/home/user/path/env/lib/python3.4/site-packages/django/http/__init__.py", line 1, in <module> 
    from django.http.cookie import SimpleCookie, parse_cookie 
ImportError: cannot import name 'SimpleCookie' 

,你可以看到行,

from django.core.wsgi import get_wsgi_application 

失败

,另一方面,当我与Python解释器试试,它正确导入。

我也验证了同样的解释正在由乘客通过登录变量

import sys 
raise Exception(sys.executable) 

任何想法,这样做的原因是什么? 我试图登录路径,它显示了以下

['/home/user/path/env/lib/python3.4/site-packages', '/home/user/path/env/lib/python3.4/site-packages/django', '/home/user/path/env/bin', '/home/user/path', '/usr/local/dh/passenger/helper-scripts', '/home/user/path/env/lib/python34.zip', '/home/user/path/env/lib/python3.4', '/home/user/path/env/lib/python3.4/plat-linux', '/home/user/path/env/lib/python3.4/lib-dynload', '/home/user/opt/python-3.4.2/lib/python3.4', '/home/user/opt/python-3.4.2/lib/python3.4/plat-linux', '/home/user/path/env/lib/python3.4/site-packages', '/home/user/path', '/home/user/path/git/package'] 

这似乎没什么问题

+0

可能的路径是borked。尝试显示'sys.path' – 2015-02-23 19:34:01

+0

@WayneWerner看编辑 – 2015-02-23 19:42:02

+0

从你的解释器你可以'从django.http.cookie import SimpleCookie',对吗?如果你在'import sys'之后把它放在文件中呢? – 2015-02-23 20:04:32

回答

0

我遇到了一个同样的问题,以下解决方案为我工作。 我有Python 3.4的Django 1.7,使用Eclipse和PyDev作为我的IDE。

我的解决办法是与此相关的主题:Import Python module fails (http.cookies)

我做了什么:

  1. 在Eclipse中,转到标签Project/Properties
  2. 选择侧标签PyDev - PYTHONPATH
  3. 选择External Libraries
  4. 应该有一条看起来像/.../lib/pythonX.Y/site-packages/django的路径。 删除它。 (我正在使用venv软件包来创建我的虚拟环境,您的路径可能不同。)

  5. 运行该项目并查看它是否有效。

评论:我认为这确实是一个非常奇怪的问题...可能与Python3的PyDev - DjangoProject设置有关。让我知道这是否有帮助。

+0

请告诉您这是否有助于您的问题。 – lpounng 2015-05-19 01:25:36

1

The instructions in dreamhost wiki工作正常。你只需要在你的wsgi配置文件中删除额外的django路径。它应该是这样的:

... 
cwd = os.getcwd() 
sys.path.append(cwd) 
sys.path.append(cwd + '/projectname') #You must add your project here 

sys.path.insert(0,cwd+'/env/bin') 
sys.path.insert(0,cwd+'/env/lib/python2.7/site-packages') 
... 

不喜欢这样的:

... 
cwd = os.getcwd() 
sys.path.append(cwd) 
sys.path.append(cwd + '/projectname') #You must add your project here 
sys.path.insert(0,cwd+'/env/lib/python2.7/site-packages/django') 
sys.path.insert(0,cwd+'/env/bin') 
sys.path.insert(0,cwd+'/env/lib/python2.7/site-packages') 
...