dreamhost python3 Django乘客设置导入Cookie

dreamhost python3 Django乘客设置导入Cookie,django,python-3.x,passenger,wsgi,dreamhost,Django,Python 3.x,Passenger,Wsgi,Dreamhost,我正在尝试在dreamhost上使用python3设置django 我已经按照他们的记录安装了一个virtualenv,并安装了所有必备组件。我已经让runserver工作了 问题来自乘客设置。错误日志显示我无法导入名为Cookie的模块,这是由于进一步的错误造成的 这是回溯: File "/home/user/path/env/lib/python3.4/imp.py", line 171, in load_source module = methods.load() File "

我正在尝试在dreamhost上使用python3设置django

我已经按照他们的记录安装了一个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'
失败了

另一方面,当我尝试使用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']

这对我来说似乎很好

我遇到了同样的问题,下面的解决方案对我很有效。 我有Django 1.7和Python3.4,使用Eclipse和PyDev作为我的IDE

我的解决方案与此线程相关:

我所做的:

  • 在Eclipse中,转到选项卡
    Project/Properties
  • 选择side选项卡
    PyDev-PYTHONPATH
  • 选择外部库
  • 应该有一个类似于
    /…/lib/pythonX.Y/site packages/django
    的路径删除它。 (我正在使用venv软件包创建虚拟环境。您的路径可能不同。)

  • 运行这个项目,看看它是否有效

  • 评论:我认为这确实是一个非常奇怪的问题。。。可能与Python3的PyDev-django项目设置有关。如果有帮助,请告诉我。

    工作正常。您只需要删除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')
    ...
    
    不是这样的:

    ...
    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')
    ...
    

    可能这条路堵住了。尝试显示
    sys.path
    @WayneWerner查看解释器中的编辑您可以从django.http.cookie导入SimpleCookie,对吗?当您在导入sys后将其放入文件时会怎么样?是的,您是正确的,我可以从解释器执行此操作,但当我在passenger_wsgi.py文件中执行此操作时,它会抛出与上面相同的错误。我已经证实它也使用了相同的解释器。。所以我对这个问题感到困惑。我不得不相信这与乘客有关。。这不是一个非常进步的信仰体系。请告诉我这是否有助于你的问题。