Vagrant, WSGI, virtualenv and TypeError: 'module' object is not callable
我已经为我正在构建的应用程序提供了一个可移动的盒子,但是我在试图让Apache为其服务时遇到了麻烦。
它使用的是一个虚拟环境的软件包——现在这只是一个烧瓶和它的依赖关系,一切都很好。我可以在env中使用ssh并运行应用程序。应用程序本身只是目前最小的应用程序。
Apache错误
1 2 | [Sun Mar 31 10:06:54 2013] [error] [client 10.0.2.2] mod_wsgi (pid=1587): Exception occurred processing WSGI script '/vagrant/myapp/myapp.wsgi'. [Sun Mar 31 10:06:54 2013] [error] [client 10.0.2.2] TypeError: 'module' object is not callable |
文件夹
1 2 3 4 5 | /vagrant ├── env └── myapp ├── app.py └── myapp.wsgi |
号
我的应用程序.wsgi
1 2 3 4 5 6 7 | activate_this = '/vagrant/env/bin/activate_this.py' execfile(activate_this, dict(__file__=activate_this)) import sys sys.path.insert(0, '/vagrant/myapp') import app as application |
默认站点vhost
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <VirtualHost *:80> WSGIDaemonProcess myapp user=www-data group=www-data threads=5 WSGIScriptAlias / /vagrant/myapp/myapp.wsgi <Directory /vagrant/myapp> WSGIProcessGroup myapp WSGIApplicationGroup %{GLOBAL} Order deny,allow Allow from all </Directory> ErrorLog /var/log/apache2/error.log </VirtualHost> |
。
我试过用用户和组
我尝试将站点包添加到路径中,并尝试将
该应用程序可以与
我被难住了。
我在wsgi文件中遇到的问题是因为我正在导入应用程序包,而不是其中的类(因为它们的名称相同而被捕获)。
1 2 3 4 5 6 7 | activate_this = '/vagrant/env/bin/activate_this.py' execfile(activate_this, dict(__file__=activate_this)) import sys sys.path.insert(0, '/vagrant/myapp') from app import app as application |
注意,最后一行已从
可能这个问题是因为你使用一个共享文件夹作为你的应用程序源代码的存储,它的文件系统和普通ext3/4有点不同,所以Apache和/或
编辑:虽然我只是一个python初学者,但typeerror:'module'对象不可调用可以帮助您解决问题。