2016-08-25 13 views
3

Я пытаюсь использовать модуль Python MySQL-python для подключения к внешней базе данных MySQL из экземпляра AWS EC2, работающего с amazon linux.ImportError: Нет модуля с именем _mysql

Это код, который я пытаюсь запустить:

db=_mysql.connect(host="hostname",user="dbuser",passwd="dbpassword",db="database") 
db.query("""SELECT id, field1 FROM test""") 
r=db.store_result() 
row = r.fetch_row() 
print row 

Я установил модуль питона с пипом:

sudo pip install MySQL-python 

Когда я запускаю сценарий, я получаю следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "script.py", line 2, in <module> 
    import _mysql 
ImportError: No module named _mysql 

Когда я исследую это я продолжаю выкапывать много решений для Ubuntu/Debian Linux, которые не работают п или amazon linux.

Как исправить эту ошибку на amazon linux и запустить скрипт?

Кроме того, у любого опытного пользователя Linux, наблюдающего/отвечающего: есть ли какое-либо преимущество в использовании amazon linux, когда я пытаюсь узнать больше linux и забрать AWS, или мне лучше использовать изображение Ubuntu/Debian? Я не опытный пользователь Linux, как видно из вопроса.

Update

Я понял, что установка пакета была неудачной на сервере амазонка Linux. Вот полный выход, когда я пытаюсь запустить установку через пип:

$ sudo pip install MySQL-Python 
Collecting MySQL-Python 
    Using cached MySQL-python-1.2.5.zip 
Installing collected packages: MySQL-Python 
    Running setup.py install for MySQL-Python ... error 
    Complete output from command /usr/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-B1IkvH/MySQL-Python/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-RNgtpa-record/install-record.txt --single-version-externally-managed --compile: 
    running install 
    running build 
    running build_py 
    creating build 
    creating build/lib.linux-x86_64-2.7 
    copying _mysql_exceptions.py -> build/lib.linux-x86_64-2.7 
    creating build/lib.linux-x86_64-2.7/MySQLdb 
    copying MySQLdb/__init__.py -> build/lib.linux-x86_64-2.7/MySQLdb 
    copying MySQLdb/converters.py -> build/lib.linux-x86_64-2.7/MySQLdb 
    copying MySQLdb/connections.py -> build/lib.linux-x86_64-2.7/MySQLdb 
    copying MySQLdb/cursors.py -> build/lib.linux-x86_64-2.7/MySQLdb 
    copying MySQLdb/release.py -> build/lib.linux-x86_64-2.7/MySQLdb 
    copying MySQLdb/times.py -> build/lib.linux-x86_64-2.7/MySQLdb 
    creating build/lib.linux-x86_64-2.7/MySQLdb/constants 
    copying MySQLdb/constants/__init__.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants 
    copying MySQLdb/constants/CR.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants 
    copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants 
    copying MySQLdb/constants/ER.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants 
    copying MySQLdb/constants/FLAG.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants 
    copying MySQLdb/constants/REFRESH.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants 
    copying MySQLdb/constants/CLIENT.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants 
    running build_ext 
    building '_mysql' extension 
    creating build/temp.linux-x86_64-2.7 
    gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/include/mysql55 -I/usr/include/python2.7 -c _mysql.c -o build/temp.linux-x86_64-2.7/_mysql.o -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC -fPIC -g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -DMY_PTHREAD_FASTMUTEX=1 
    unable to execute 'gcc': No such file or directory 
    error: command 'gcc' failed with exit status 1 

    ---------------------------------------- 
Command "/usr/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-B1IkvH/MySQL-Python/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-RNgtpa-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-B1IkvH/MySQL-Python/ 
+2

Я бы проверял модули, установленные на установке python, которые вы сейчас используете. – grael

+0

Благодарим за предложение - да, модуль, похоже, не был успешно установлен. Вывод из установки pip теперь вставлен выше. – goose

ответ

1

Только обходной путь, но один, который работал на меня в ситуациях, когда я не мог легко позвонить «Суда пип установить».

То, что вы (часто, но не всегда) можно сделать:

  1. Включите в систему, где этот модуль питона вы ищете работу
  2. Определить его «место», например, после установки enum34 на мой убунту, установка будет поместить файлы под /usr/lib/python2.7/dist-packages/enum
  3. Поместите этот каталог в архиве
  4. на вашей системе «целевой», экстракт, который архивирует локально
  5. Манипулировать путь python для включения локально извлеченного архива

Как сказано, это не красиво; но если не появятся лучшие ответы; у вас есть хотя бы что-то попробовать ...

+0

Спасибо за предложение. Таким образом, в двух словах это сбрасывает уже установленный код в другой системе в новую систему и, при необходимости, изменяет путь. Разве процесс установки не сложнее, чем это? Разве нет вещей, которые можно пропустить? Любой опыт работы с AWS? Вы потрудились бы с amazon linux? – goose

+0

Исправить; дамп и изменение ;-) Ну, для некоторых модулей python процесс установки может включать компиляцию.Моя точка зрения в основном: это помогло мне в прошлом. У меня нет опыта работы с AWS; и я не могу сказать вам, нужно ли вам беспокоиться с Amazon Linux! – GhostCat

+0

Cheers. Я думаю, что по размышлению я буду продолжать учиться на Ubuntu. После некоторого большего чтения я думаю, что amazon linux войдет в это, когда сотрудники amazon будут поддерживать большие настройки, не обязательно для меня изучать AWS/linux. – goose