我似乎无法让这个脚本工作:
import web
web.config.debug=False
urls = (
'/', 'hello',
'/bye/', 'bye')
app = web.application(urls, globals())
session = web.session.Session(app, web.session.DiskStore('sessions'),
initializer={'count': 0})
class hello:
def GET(self):
session.count += 1
return "You visited " + str(session.count) + " pages."
class bye:
def GET(self):
session.kill()
return ("Bye, web!")
if __name__ == "__main__":
app.run()
这是可从web.py文档页面获得的代码:http://webpy.org/cookbook/sessions
当我尝试通过转到http://localhost:1234/
访问“hello”页面时,应用程序返回内部服务器错误。
以下是访问此资源时终端的输出:
http://0.0.0.0:1234/
Traceback (most recent call last):
File "/Library/Python/2.6/site-packages/web/application.py", line 237, in process
return self.handle()
File "/Library/Python/2.6/site-packages/web/application.py", line 228, in handle
return self._delegate(fn, self.fvars, args)
File "/Library/Python/2.6/site-packages/web/application.py", line 409, in _delegate
return handle_class(cls)
File "/Library/Python/2.6/site-packages/web/application.py", line 385, in handle_class
return tocall(*args)
File "testing.py", line 15, in GET
session.count += 1
File "/Library/Python/2.6/site-packages/web/session.py", line 69, in __getattr__
return getattr(self._data, name)
AttributeError: 'ThreadedDict' object has no attribute 'count'
127.0.0.1:49207 - - [20/Mar/2012 20:34:01] "HTTP/1.1 GET /" - 500 Internal Server Error
任何web.py专家都可以告诉我发生了什么吗?
答案 0 :(得分:1)
更改 app = web.application(urls,globals())
要 app = web.application(urls,locals())
答案 1 :(得分:1)
我安装并配置了Macports版本的Python 2.7.2,但我仍然得到了类似的结果。
我刚刚想到这可能是权限问题,因为存储会话的位置。我尝试使用Python 2.7和Python 2.6运行'sudo',它们来自Apple,并且正在运行
sudo python myfile.py 1234
Web.py会话现在正在运行。 @Eduardo Ivanec:我将尝试使用您的说明设置我的Python开发环境。再次感谢你!
答案 2 :(得分:0)
您的代码与Python 2.7.2和web.py 0.36一样。如果您正在运行任何旧版本,我会升级,因为示例有效。
您的初始化程序似乎无法正常工作。您可以尝试使用此代码段来首次使用时初始化count属性:
class hello:
def GET(self):
try:
session.count += 1
except AttributeError:
session.count = 1
return "You visited " + str(session.count) + " pages."
编辑:由于您使用的是OS X,this link可能会有所帮助。它描述了如何使用标准OS X工具和virtualenv建立全新的Python环境。我使用GNU / Linux,但它看起来不错。此外,您可以在official download page下载准备好的版本。
答案 3 :(得分:0)
之前我遇到过这个问题。
对于500内部错误,请使用chmod -R 755 your_foler / sessions
更改文件夹的权限。
答案 4 :(得分:0)
问题是python版本。我有同样的问题,当我执行2.7版本的python时,我解决了它。
只做private void btnok1_Click(object sender, EventArgs e)
{
if (lblexcel1.Text=="")
{
MessageBox.Show("You have not Select Excel File. Please Select Respective Excel File");
}
//Create connection string to Excel work book
string excelConnectionString =@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Details.xls;Extended Properties=""Excel 8.0;HDR=YES;""";
//Create Connection to Excel work book
OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
//Create OleDbCommand to fetch data from Excel
OleDbCommand cmd = new OleDbCommand("Select [ID],[Name],[Location] from [Detail$]",excelConnection);
excelConnection.Open();
OleDbDataReader dReader;
dReader = cmd.ExecuteReader();
SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);sqlBulk.DestinationTableName = "Details";
//sqlBulk.ColumnMappings.Add("ID", "ID");
//sqlBulk.ColumnMappings.Add("Name", "Name");
sqlBulk.WriteToServer(dReader);
}
,会话就完美无缺。