首先,我遵循了马特·卡里尔博客上的教程中的说明(尽管假设我会在我的域上创建一个子目录,而我没有)。然后,我删除了所有的东西,重新开始了关于水瓶的Dreamhost wiki页面的说明。每次,我在浏览器中都会收到一条消息:“导入您的passenger_wsgi.py时出错”。在StackOverflow上回答这个主题对我不起作用。
我的passenger_wsgi.py文件是:
import sys, os
INTERP = os.path.join(os.environ['HOME'], 'flask_env', 'bin', 'python')
if sys.executable != INTERP:
os.execl(INTERP, INTERP, *sys.argv)
sys.path.append(os.getcwd())
from flask import Flask
application = Flask(__name__)
sys.path.append('penguicon-trax')
from penguicon-trax.penguicontrax import app as application企鹅-trax是Git创建的目录的名称,当我将我的应用程序克隆到虚拟环境中时,我安装了烧瓶(而不是在公共dir中)。这个应用程序是没有破折号的penguicontrax.py。
我确保passenger_wsgi.py第四行的缩进是一个制表符,而不是空格。
我使用DreamHost webpanel (在这里我是完全托管的)使/home/username/烧瓶_env/public,我标记了“客运(只有Ruby/Python应用程序)”复选框,并点击了“更改设置”按钮。
我将passenger_wsgi.py直接上传到梦想主机上的flask_env目录中。当我将SSH放入Dreamhost时,命令行上的ls将给出如下信息:
bin lib passenger_wsgi.pyc public
include passenger_wsgi.py penguicon-trax当我通过SSH运行passenger_wsgi.py时,它给了我:
File "passenger_wsgi.py", line 11
from penguicon-trax.penguicontrax import app as application
^
SyntaxError: invalid syntax当我只使用“从企鹅-trax导入应用程序作为应用程序”时,它也会这样做。
当我更改该行以删除破折号:"penguicontrax.penguicontrax“并运行它时,它会给出"ImportError: No模块”。
如果我将行改为“作为应用程序从企鹅导入应用程序”,并通过SSH运行它,它将不会给我任何错误消息或其他输出。然而,我的域名现在给了404。
你能告诉我我做错了什么吗?
发布于 2013-09-26 01:35:12
如果您的passenger_wsgi.py在其末尾有以下代码:
from foo.bar import app as application..。然后需要一个名为"foo“的子目录,其中包含两个文件:一个文件名为bar.py,另一个文件名为__init__.py,以便Python能够识别目录中包含模块代码。
在您的示例中,从文件夹名(企鹅-trax)中删除破折号,因为模块应该有短的、全小写的名称。。然后,您的烧瓶应用程序代码将位于$HOME/flask_env/penguicontrax/penguicontrax.py中的一个文件中,最后,运行以下命令来尝试它:
touch $HOME/flask_env/penguicontrax/__init__.py
python $HOME/flask_env/passenger_wsgi.pyhttps://stackoverflow.com/questions/17778894
复制相似问题