权限问题 - PermissionError [Errno 13] Permission denied
Problem with permissions - PermissionError [Errno 13] Permission denied
我正在尝试在 raspberry pi 上使用 bottle 和 python 3 基本上将网页加载到 pi 的 IP 地址上。这应该允许我在我的笔记本电脑上的浏览器中输入 pi 的 IP,并在网页上单击按钮以向我的程序提供输入。但是,当我尝试这样做时,我收到一个权限错误,提示权限被拒绝
这是代码、网络代码和错误
代码:
from bottle import route, run, template, request
import time
IP_ADDRESS = '192.168.1.8' #Change this to the IP of your Pi
#Handler for the home page
@route('/')
def index():
cmd = request.GET.get('command', '')
if cmd == 'f':
print('Forward' )
elif cmd == 'l':
print('Left' )
elif cmd == 's':
print('Stop' )
elif cmd == 'r':
print('Right' )
elif cmd == 'b':
print('Reverse' )
return template('home.tpl')
#Start the webserver running on port 80
try:
run(host=IP_ADDRESS, port=80)
finally:
print('done')
网络代码 (home.tpl):
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<style>
.controls {
width: 150px;
font-size: 32pt;
text-align: center;
padding: 15px;
background-color: green;
color: white;
}
</style>
<script>
function sendCommand(command)
{
$.get('/', {command: command});
}
function keyPress(event){
code = event.keyCode;
if (code == 119) {
sendCommand('f');
}
else if (code == 97) {
sendCommand('l');
}
else if (code == 115) {
sendCommand('s');
}
else if (code == 100) {
sendCommand('r');
}
else if (code == 122) {
sendCommand('b');
}
}
$(document).keypress(keyPress);
</script>
</head>
<body>
<h1>Web Rover</h1>
<table align="center">
<tr><td></td><td class="controls" onClick="sendCommand('f');">W</td><td></td></tr>
<tr><td class="controls" onClick="sendCommand('l');">A</td>
<td class="controls" onClick="sendCommand('s');">S</td>
<td class="controls" onClick="sendCommand('r');">D</td>
</tr>
<tr><td></td><td class="controls" onClick="sendCommand('b');">Z</td><td></td></tr>
</table>
</body>
</html>
错误:
Bottle v0.12.19 server starting up (using WSGIRefServer())...
Listening on http://192.168.1.8:80/
Hit Ctrl-C to quit.
done
Traceback (most recent call last):
File "/home/pi/Desktop/bottle-0.12.19/Web Test.py", line 24, in <module>
run(host=IP_ADDRESS, port=80)
File "/home/pi/Desktop/bottle-0.12.19/bottle.py", line 3137, in run
server.run(app)
File "/home/pi/Desktop/bottle-0.12.19/bottle.py", line 2789, in run
srv = make_server(self.host, self.port, app, server_cls, handler_cls)
File "/usr/lib/python3.7/wsgiref/simple_server.py", line 153, in make_server
server = server_class((host, port), handler_class)
File "/usr/lib/python3.7/socketserver.py", line 452, in __init__
self.server_bind()
File "/usr/lib/python3.7/wsgiref/simple_server.py", line 50, in server_bind
HTTPServer.server_bind(self)
File "/usr/lib/python3.7/http/server.py", line 137, in server_bind
socketserver.TCPServer.server_bind(self)
File "/usr/lib/python3.7/socketserver.py", line 466, in server_bind
self.socket.bind(self.server_address)
PermissionError: [Errno 13] Permission denied
代码和网络代码在同一个文件夹中。本来我用 bottle 有问题,但是后来我把这两个文件移动到 bottle 所在的文件夹中,然后当我 运行 它给出了上面的错误。
我尝试将 home.tpl 设为 home.html。当我在浏览器中打开 home.html 时,它正确显示了网络代码。当我在浏览器中打开 home.tpl 时,它只给我屏幕上显示的代码。如果我 运行 带有 home.tpl 或 home.html 的 python 文件,则会显示相同的错误(是的,我将文件从 .tpl 更改为 .html代码)
有谁知道可以帮我解决这个问题的吗??任何帮助将不胜感激。
没有管理员权限,您不能使用低于 1024(在您的情况下为 80)的任何端口。使用大于 1024 的端口(推荐)或运行具有提升(sudo
)权限的脚本。
我正在尝试在 raspberry pi 上使用 bottle 和 python 3 基本上将网页加载到 pi 的 IP 地址上。这应该允许我在我的笔记本电脑上的浏览器中输入 pi 的 IP,并在网页上单击按钮以向我的程序提供输入。但是,当我尝试这样做时,我收到一个权限错误,提示权限被拒绝
这是代码、网络代码和错误
代码:
from bottle import route, run, template, request
import time
IP_ADDRESS = '192.168.1.8' #Change this to the IP of your Pi
#Handler for the home page
@route('/')
def index():
cmd = request.GET.get('command', '')
if cmd == 'f':
print('Forward' )
elif cmd == 'l':
print('Left' )
elif cmd == 's':
print('Stop' )
elif cmd == 'r':
print('Right' )
elif cmd == 'b':
print('Reverse' )
return template('home.tpl')
#Start the webserver running on port 80
try:
run(host=IP_ADDRESS, port=80)
finally:
print('done')
网络代码 (home.tpl):
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<style>
.controls {
width: 150px;
font-size: 32pt;
text-align: center;
padding: 15px;
background-color: green;
color: white;
}
</style>
<script>
function sendCommand(command)
{
$.get('/', {command: command});
}
function keyPress(event){
code = event.keyCode;
if (code == 119) {
sendCommand('f');
}
else if (code == 97) {
sendCommand('l');
}
else if (code == 115) {
sendCommand('s');
}
else if (code == 100) {
sendCommand('r');
}
else if (code == 122) {
sendCommand('b');
}
}
$(document).keypress(keyPress);
</script>
</head>
<body>
<h1>Web Rover</h1>
<table align="center">
<tr><td></td><td class="controls" onClick="sendCommand('f');">W</td><td></td></tr>
<tr><td class="controls" onClick="sendCommand('l');">A</td>
<td class="controls" onClick="sendCommand('s');">S</td>
<td class="controls" onClick="sendCommand('r');">D</td>
</tr>
<tr><td></td><td class="controls" onClick="sendCommand('b');">Z</td><td></td></tr>
</table>
</body>
</html>
错误:
Bottle v0.12.19 server starting up (using WSGIRefServer())...
Listening on http://192.168.1.8:80/
Hit Ctrl-C to quit.
done
Traceback (most recent call last):
File "/home/pi/Desktop/bottle-0.12.19/Web Test.py", line 24, in <module>
run(host=IP_ADDRESS, port=80)
File "/home/pi/Desktop/bottle-0.12.19/bottle.py", line 3137, in run
server.run(app)
File "/home/pi/Desktop/bottle-0.12.19/bottle.py", line 2789, in run
srv = make_server(self.host, self.port, app, server_cls, handler_cls)
File "/usr/lib/python3.7/wsgiref/simple_server.py", line 153, in make_server
server = server_class((host, port), handler_class)
File "/usr/lib/python3.7/socketserver.py", line 452, in __init__
self.server_bind()
File "/usr/lib/python3.7/wsgiref/simple_server.py", line 50, in server_bind
HTTPServer.server_bind(self)
File "/usr/lib/python3.7/http/server.py", line 137, in server_bind
socketserver.TCPServer.server_bind(self)
File "/usr/lib/python3.7/socketserver.py", line 466, in server_bind
self.socket.bind(self.server_address)
PermissionError: [Errno 13] Permission denied
代码和网络代码在同一个文件夹中。本来我用 bottle 有问题,但是后来我把这两个文件移动到 bottle 所在的文件夹中,然后当我 运行 它给出了上面的错误。
我尝试将 home.tpl 设为 home.html。当我在浏览器中打开 home.html 时,它正确显示了网络代码。当我在浏览器中打开 home.tpl 时,它只给我屏幕上显示的代码。如果我 运行 带有 home.tpl 或 home.html 的 python 文件,则会显示相同的错误(是的,我将文件从 .tpl 更改为 .html代码)
有谁知道可以帮我解决这个问题的吗??任何帮助将不胜感激。
没有管理员权限,您不能使用低于 1024(在您的情况下为 80)的任何端口。使用大于 1024 的端口(推荐)或运行具有提升(sudo
)权限的脚本。