Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ImportError: No module named 'MySQLdb', из под Apache 
V
    Опции темы
Bulat
Дата 14.7.2016, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



С Питоном "играюсь" недавно, поэтому нуб! Как исправить багу, которая появляется при запуске из Apache?

error.log : 
Код

Traceback (most recent call last):
  File "/var/www/Python/cgi-bin/next.py", line 3, in <module>
    import db;
  File "/var/www/Python/cgi-bin/db.py", line 3, in <module>
    import MySQLdb
ImportError: No module named 'MySQLdb'




next.py
Код

import db;

database = db.connectDB()

cursor = db.getCursor(database)

print("Content-type: text/html")

print()

## database query
sql = """SELECT id, login FROM users"""
## execute query
cursor.execute(sql)

## fetch query result
data =  cursor.fetchall()
## get query lines
for rec in data:
    ## get data from lines
    id, login = rec
    ## print information
    print (id, '\t', login, '\n')

print('<h1>Hello world!</h1><br/><a href="/cgi-bin/hello.py">back</a>')



db.py
Код

#!/usr/bin/python3

import MySQLdb
#import string

config = {
  'user': '***',
  'passwd': '***',
  'host': '127.0.0.1',
  'db': 'web'
}

def connectDB() :
  db = MySQLdb.connect(**config)
  return db

def getCursor(db) :
  cursor = db.cursor()
  return cursor

## database query
#sql = """SELECT id, login FROM users"""
## execute query
#cursor.execute(sql)

## fetch query result
#data =  cursor.fetchall()
## get query lines
#for rec in data:
    ## get data from lines
#    id, login = rec
    ## print information
#    print id, "\t", login, "\n"

#db.close() 


При запуске из консоли - все работает как часы.  smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
samssrus
Дата 15.7.2016, 08:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











для начала можно добавить __init__.py в папку с файлами проекта:
Код

__all__ = ["next","db"]

Это должно решить первую часть проблемы.

Apache на той же машине запущен?

Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
Bulat
Дата 15.7.2016, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(samssrus @ 15.7.2016,  08:23)
для начала можно добавить __init__.py в папку с файлами проекта:
Код

__all__ = ["next","db"]

Это должно решить первую часть проблемы.

Apache на той же машине запущен?

Этот ответ добавлен с нового Винграда - http://vingrad.com

Добавил файл с этой одной строчкой - ничего не изменилось.

Да, апач запущен там же!


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
samssrus
Дата 16.7.2016, 09:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











в некоторых местах написано, что MySQLdb не хочет работать с python 3.
воспроизвести в точности Вашу ошибку мне не удается.
но...
еще можно изменить import и посмотреть внимательнее на что ругается.
Код

import sys
try:
    import db
except ImportError as e:
    sys.exit("Ошибка импорта. %s" % e)

я дошел до того, что у меня ругается он в действительности на отсутствие '_mysql'.

В конечном счете, когда возникает ошибка импорта - значит не видны пути. Бороться с этим очень муторно. Поэтому, есть такая удобная штука как Anaconda (https://www.continuum.io/downloads). Очень советую пользоваться ей при программировании на python.

Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
Bulat
Дата 18.7.2016, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(samssrus @  16.7.2016,  09:12 Найти цитируемый пост)
в некоторых местах написано, что MySQLdb не хочет работать с python 3.


Брехня, из консоли у меня все прекрасно работает. Проблема возникает, когда я запускаю все это в апач, т.е. набираю в браузере соответствующую ссылку!

Цитата(samssrus @  16.7.2016,  09:12 Найти цитируемый пост)
я дошел до того, что у меня ругается он в действительности на отсутствие '_mysql'.

При запуске из консоли он вообще ни на что не ругается!

Цитата(samssrus @  16.7.2016,  09:12 Найти цитируемый пост)
В конечном счете, когда возникает ошибка импорта - значит не видны пути. Бороться с этим очень муторно. 

Хоть и муторно, но надо!  smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
Bulat
Дата 18.7.2016, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



После целого ряда экспериментов, таки удалось заставить все работать! Правда разметку еще нужно править, но сами скрипты отрабатывают как часы!

Если на будущее кто столкнется, лично у меня проблема решилась следующим образом:

1. Консоль. При запуске из-под консоли я запускал python next.py - и это работало. Но если я запускал python3 next.py - у меня появлялась та же ошибка что и из-под апача!

2. Изменив во всех скриптах первую строчку с #!/usr/bin/python3 на #!/usr/bin/python - у меня перестала появлятся ошибка импорта модуля!

3. При первой строчке в скрипте: #!/usr/bin/python3 строка: print("Content-type: text/html") работает.

Но при первой строчке: #!/usr/bin/python обязательно нужно: print("Content-type: text/html\n\n")

У меня по-крайней мере так заработало!  smile 



--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Веб-разработка и фреймворки | Следующая тема »


 




[ Время генерации скрипта: 0.1148 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.