关于pythonshell和fcgiserver中Python路径的混淆:为什么它们不同?

关于pythonshell和fcgiserver中Python路径的混淆:为什么它们不同?,python,django,Python,Django,我正在尝试将Django应用程序部署到共享服务器上的生产环境中 我似乎在Python路径上遇到了问题,因为我从服务器上得到了错误: 没有名为products.models的模块 但是,当我转到应用程序的根目录并运行shell时,模块加载良好 '>>> from products.models import Answer '>>> import sys '>>> sys.path ['/home/SecretUserAcct/django-pr

我正在尝试将Django应用程序部署到共享服务器上的生产环境中

我似乎在Python路径上遇到了问题,因为我从服务器上得到了错误: 没有名为products.models的模块

但是,当我转到应用程序的根目录并运行shell时,模块加载良好

'>>> from products.models import Answer
'>>> import sys
'>>> sys.path
['/home/SecretUserAcct/django-projects/review_app', ...]
上面的路径确实指向Django应用程序的根

我猜这是Python路径的一个问题,但我不确定哪里出了问题

以下是fcgi文件: $cat~/public_html/django.fcgi

#!/usr/local/bin/python2.6 
import sys
import os

# Insert PYTHONPATH values here, including the path to your application
#sys.path.insert(0, '<path_to_your_app_directory>')
sys.path.insert(0, '/home/SecretUserAcct/django-projects/')
# Provide the location of your application's settings file.
os.environ['DJANGO_SETTINGS_MODULE'] = 'review_app.settings'

from django.core.servers.fastcgi import runfastcgi
runfastcgi(method = "threaded", daemonize = "false", maxchildren=3, minspare=0, maxspare=1)
#/usr/local/bin/python2.6
导入系统
导入操作系统
#在此处插入PYTHONPATH值,包括应用程序的路径
#sys.path.insert(0,,)
sys.path.insert(0,“/home/SecretUserAcct/django projects/”)
#提供应用程序设置文件的位置。
os.environ['DJANGO\u设置\u模块]='review\u app.SETTINGS'
从django.core.servers.fastcgi导入runfastcgi
runfastcgi(method=“threaded”,daemonize=“false”,maxchildren=3,minspare=0,maxspare=1)
我在这里缺少什么理解?

我有点困惑——如果您在工作案例中的路径是:

'/home/SecretUserAcct/django-projects/review_app'
i、 例如,包括应用程序,为什么在第二个非工作案例中插入

'/home/SecretUserAcct/django-projects/'

i、 例如,没有应用程序?当然,您需要不同形式的导入,这取决于您选择在sys.path上放置的内容,否?

Django dev服务器和manage.py shell将当前目录(运行manage.py的目录)放在python路径上。在生产模式下运行时,如果您有依赖于该功能的代码,则需要相应地调整路径。

您还可以在第一个shell中显示
Answer的值吗?>>>来自products.models import Answer>>>>Answer.\u file\uuuuuuuuuuu回溯(最后一次调用):file“”,第1行,在AttributeError:type对象'Answer'没有属性'file',您指出了一个有效的点,之所以这样设置是因为来自我的共享主机的这些指令:是来自#1的Django应用程序文件夹的位置。这不是应用程序文件夹本身的位置,而是包含应用程序文件夹的文件夹。例如,如果我的应用程序文件夹名为“mysite”,并且我已将其放置在名为“python”的文件夹中,那么我希望指向/python,而不是/mysite。原因与Python加载模块的方式有关。@Bryan,然后您必须相应地更改导入语句,以明确使用应用程序的名称。