2015-04-10 5 views
1

Вот код, который у меня есть. В основном у меня есть линия Shebang, потому что psycopg2 не работал без него.Shebang line #!/Usr/bin/python3 предотвращает запуск сервера

Но теперь, когда у меня есть эта линия там она не позволяет мне запустить базу данных, он просто говорит, что «модуль не назвал" колба»

#!/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) 
+0

Shebang делает код выполненным с системной версией python. Если флажок не установлен в системном масштабе (как в случае, если он был установлен с virtualenv, для python2), пакет не будет найден. Вы установили пакет с колпачком? – styts

ответ

0

Это проблема окружающей среды, а не колбу, постгерс или проблему shebang. Вызывается конкретная версия Python, и ей не дают правильный путь к ее библиотекам.

В зависимости от того, на какой платформе вы находитесь, изменение вами shebang на #! /usr/bin/env python3 может решить проблему, но если нет (очень вероятно, что хотя использование env считается лучшим/переносимым в наши дни), вам может потребоваться добавить свой Python3 libs вручную в вашем коде.

sys.path.append("/path/to/your/python/libs") 

Если вы знаете, где ваши ЛИЭСЫ Python являются (или, может быть колба установлены где-то своеобразны?), То вы можете добавить, что на путь и импорт после строки, где вы добавили к пути будет включать его в поиске для модулей.

+0

Я пробовал использовать #!/usr/bin/env python3 Я все еще получаю ту же ошибку в модульной фляге. Мои библиотеки python - это C: \ python27 и C: \ python24 (я загрузил оба из-за того, что не был уверен). Это мои переменные среды «C: \ Python27 \; C: \ Python27 \ Scripts; C: \ ProgramData \ Oracle \ Java \ javapath; C: \ Python27 \ Scripts; C: \ Program Files (x86) \ Skype \ Phone \ ». Я попытался установить фляж 100 разных способов. –

+1

Вы пытаетесь запустить * python3 *, но вы говорите, что у вас установлен * python2 *. Кроме того, я не знаю, что shebang оказывает какое-либо влияние на Windows - скорее всего, нет (это своего рода стандартная штука unix). Войдите в свою оболочку и попробуйте 'import sys', а затем' print (sys.path) 'и посмотрите, что включено. Кроме того, на всякий случай, если это имеет какой-то эффект, измените shebang на '#!/usr/bin/env python' (удалить «3»). Попытайтесь найти место, где установлена ​​фляга, - это то место, которое вы должны включить, - но я подозреваю, что у вас есть фляжка, установленная в ваших библиотеках python2, а не python3. – zxq9

+0

В оболочке python34 я получил «C: \\ WINDOWS \\ SYSTEM32 \\ python34.zip, '' C: \\ Python34 \\ DLLs ',' C: \\ Python34 \\ Lib ',' C: \\ Python34 \\ lib \\ site-packages '"Также, когда я использовал #!/usr/bin/env python У меня ошибка импорта для psycopg2 –