Shebang 行 #!/usr/bin/python3 阻止服务器 运行
Shebang line #!/usr/bin/python3 preventing server run
这是我的代码。基本上我在那里有 Shebang 线,因为没有它 psycopg2 无法工作。
但是现在当我有这一行时,它不允许我 运行 数据库,它只是说 "no module named 'flask'"
#!/usr/bin/python3.4
#
# Small script to show PostgreSQL and Pyscopg together
#
from flask import Flask, render_template
from flask import request
from flask import *
from datetime import datetime
from functools import wraps
import time
import csv
import psycopg2
app = Flask(__name__)
app.secret_key ='lukey'
def getConn():
connStr=("dbname='test' user='lukey' password='lukey'")
conn=psycopg2.connect(connStr)
return conn
@app.route('/')
def home():
return render_template(index.html)
@app.route('/displayStudent', methods =['GET'])
def displayStudent():
residence = request.args['residence']
try:
conn = None
conn = getConn()
cur = conn.cursor()
cur.execute('SET search_path to public')
cur.execute('SELECT stu_id,student.name,course.name,home_town FROM student,\
course WHERE course = course_id AND student.residence = %s',[residence])
rows = cur.fetchall()
if rows:
return render_template('stu.html', rows = rows, residence = residence)
else:
return render_template('index.html', msg1='no data found')
except Exception as e:
return render_template('index.html', msg1='No data found', error1 = e)
finally:
if conn:
conn.close()
#@app.route('/addStudent, methods =['GET','POST']')
#def addStudent():
if __name__ == '__main__':
app.run(debug = True)
这是环境问题,不是烧瓶、postgres 或 shebang 问题。正在调用 Python 的特定版本,但未为其提供正确的库路径。
根据您使用的平台,将 shebang 更改为 #! /usr/bin/env python3
可以解决问题,但如果不是(很可能不是,尽管使用 env
被认为是 better/portable 做法这些天),那么您可能需要在代码中手动添加 Python3 库位置。
sys.path.append("/path/to/your/python/libs")
如果你知道你的 Python 库在哪里(或者 flask 安装在某个特殊的地方?)那么你可以将它添加到路径中,然后按照你添加到路径的行导入将它包含在他们搜索模块。
这是我的代码。基本上我在那里有 Shebang 线,因为没有它 psycopg2 无法工作。
但是现在当我有这一行时,它不允许我 运行 数据库,它只是说 "no module named 'flask'"
#!/usr/bin/python3.4
#
# Small script to show PostgreSQL and Pyscopg together
#
from flask import Flask, render_template
from flask import request
from flask import *
from datetime import datetime
from functools import wraps
import time
import csv
import psycopg2
app = Flask(__name__)
app.secret_key ='lukey'
def getConn():
connStr=("dbname='test' user='lukey' password='lukey'")
conn=psycopg2.connect(connStr)
return conn
@app.route('/')
def home():
return render_template(index.html)
@app.route('/displayStudent', methods =['GET'])
def displayStudent():
residence = request.args['residence']
try:
conn = None
conn = getConn()
cur = conn.cursor()
cur.execute('SET search_path to public')
cur.execute('SELECT stu_id,student.name,course.name,home_town FROM student,\
course WHERE course = course_id AND student.residence = %s',[residence])
rows = cur.fetchall()
if rows:
return render_template('stu.html', rows = rows, residence = residence)
else:
return render_template('index.html', msg1='no data found')
except Exception as e:
return render_template('index.html', msg1='No data found', error1 = e)
finally:
if conn:
conn.close()
#@app.route('/addStudent, methods =['GET','POST']')
#def addStudent():
if __name__ == '__main__':
app.run(debug = True)
这是环境问题,不是烧瓶、postgres 或 shebang 问题。正在调用 Python 的特定版本,但未为其提供正确的库路径。
根据您使用的平台,将 shebang 更改为 #! /usr/bin/env python3
可以解决问题,但如果不是(很可能不是,尽管使用 env
被认为是 better/portable 做法这些天),那么您可能需要在代码中手动添加 Python3 库位置。
sys.path.append("/path/to/your/python/libs")
如果你知道你的 Python 库在哪里(或者 flask 安装在某个特殊的地方?)那么你可以将它添加到路径中,然后按照你添加到路径的行导入将它包含在他们搜索模块。