2017-07-03 5 views
0

Jedes Mal, wenn ich versuche, den posts Ordner zu öffnen, erhalte ich eine Fehlermeldung:Erlaubnis für den Zugriff auf den Ordner auf Python3.6 mit Flask verweigert

Traceback (most recent call last): 
    File "C:\Python36-32\lib\site-packages\flask\app.py", line 1997, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "C:\Python36-32\lib\site-packages\flask\app.py", line 1985, in wsgi_app 
    response = self.handle_exception(e) 
    File "C:\Python36-32\lib\site-packages\flask\app.py", line 1540, in handle_exception 
    reraise(exc_type, exc_value, tb) 
    File "C:\Python36-32\lib\site-packages\flask\_compat.py", line 33, in reraise 
    raise value 
    File "C:\Python36-32\lib\site-packages\flask\app.py", line 1982, in wsgi_app 
    response = self.full_dispatch_request() 
    File "C:\Python36-32\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "C:\Python36-32\lib\site-packages\flask\app.py", line 1517, in handle_user_exception 
    reraise(exc_type, exc_value, tb) 
    File "C:\Python36-32\lib\site-packages\flask\_compat.py", line 33, in reraise 
    raise value 
    File "C:\Python36-32\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "C:\Python36-32\lib\site-packages\flask\app.py", line 1598, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "C:\Users\vikas\Projects\blg\main.py", line 19, in index 
    return render_template("index.html", newest_post=find_recent_post()) 
    File "C:\Users\vikas\Projects\blg\main.py", line 12, in find_recent_post 
    with open(str(find_recent_post_name())) as post: 
PermissionError: [Errno 13] Permission denied: 'posts/' 

Meine main.py Datei:

from flask import Flask 
from flask import render_template 

app = Flask(__name__) 

def find_recent_post_name(): 
    import glob 
    posts = glob.glob("posts/") 
    return posts[len(posts) - 1] 

def find_recent_post(): 
    with open(str(find_recent_post_name())) as post: 
     newest_post = post.readlines() 
    return newest_post 


@app.route("/") 
def index(): 
    return render_template("index.html", newest_post=find_recent_post()) 

if __name__ == '__main__': 
    app.run(debug=True) 

Meine Python-Version ist v3.6.1 und Flask v1.12.0

EDIT: Debugging-Code und PowerShell scheint zu funktionieren.

+0

Geben Sie dem Benutzer, der die Anwendung ausführt, Zugriff auf diesen Ordner. Es ist eine Dateisystem-Sache, keine Flask-Sache. – davidism

Antwort

0

Es ist kein Problem mit Kolben. Sie können entweder die Berechtigungen für den Ordner /posts/ ändern, oder Sie können Flask als Benutzer mit read Zugriff ausführen.

$ chmod 755 <folder names> 

Zugriff auf den Benutzer, der die Kolben App ausführen, oder Sie können verwenden:

$ sudo python main.py 

als admin oder laufen Kolben als Benutzer ausgeführt werden, die bereits Zugriff hat. Beachten Sie, dass Sie während der Bereitstellung dieselben Einstellungen hinzufügen sollten. also Arbeiter für uwsgi oder gunicron oder wie auch immer Sie Ihre App auf Deployment ausführen, sollte mit den gleichen Anmeldeinformationen ausgeführt werden.

beachten Sie, dass Ihre user sowohl read oder 4 Zugriff haben sollten den Inhalt der Datei zu lesen ist, und haben execute oder 1 Zugang zu cd hinein zu können.

Verwandte Themen