파이썬 마을 게시판 인덱스 파이썬 마을
우리나라 파이썬 사용자들의 이야기 마을
 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 
Google
python.or.kr Web

MySQL-python-0.9.2 설치시 에러에 대해서

 
글 쓰기   답변 달기    파이썬 마을 게시판 인덱스 -> 파이썬 질문과 답변
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
kawi



가입:
올린 글: 1

올리기올려짐: 2003 7월 24 7:13 pm    주제: MySQL-python-0.9.2 설치시 에러에 대해서 인용과 함께 답변

안녕하세요.

Python을 열심히 배우고 있습니다.

다름이 아니라. MySQL-python 이 컴파일이 잘 안돼서 이렇게 글을 올리게 되었습니다.

게시판을 뒤져보니 여러글이 있어서 쉽사리 될줄 알았는데 잘 안돼더군요 ㅠ.ㅠ

제일 먼저
_mysqlmodule.c 화일을 바꾸라고 했는데
화일이 없더군요. 보니깐 _mysql.c 라는 화일로 바뀐것 같습니다.
그래서
40 #include "structmember.h"
41 #include "mysql.h"
42 #include "mysqld_error.h"
43 #include "errmsg.h"
이 부분을
40 #include "/usr/local/python/include/python2.3/structmember.h"
41 #include "/usr/local/mysql/include/mysql/mysql.h"
42 #include "/usr/local/mysql/include/mysql/mysqld_error.h"
43 #include "/usr/local/mysql/include/mysql/errmsg.h"
이렇게 바꾸었습니다.

다음으로 setup.py 화일을 바꾸려고 봤는데.

include_dirs = [
'/usr/include/mysql', '/usr/local/include/mysql',
'/usr/local/mysql/include/mysql'
]
library_dirs = [
'/usr/lib/mysql', '/usr/local/lib/mysql',
'/usr/local/mysql/lib/mysql'
]

이렇게 정의가 되어있었습니다. 이강성님의 책을 보면 이것으로 충분하다고 나오더군요.

마지막으로 필요없다는 얘기도 있었는데

[/usr/local/mysql/lib/mysql]cp libmysqlclient.so.10.0.0 /usr/lib
[/usr/local/mysql/lib/mysql]cd /usr/lib
[/usr/lib]ln -s libmysqlclient.so.10.0.0 libmysqlclient.so
[/usr/lib]ln -s libmysqlclient.so.10.0.0 libmysqlclient.so.10

# ldconfig -v
# ldconfig

도 했습니다.

그런데 시종일관 아래와 같은 에러가 나옵니다. ㅠ.ㅠ

gcc도 잘 깔려 있고요

[root@drill usr]# rpm -qa | grep gcc
gcc-2.96-113
gcc-c++-2.96-113
[root@drill usr]# gcc
gcc: No input files

Mysql 도 동작을 잘 합니다.

"mysqlmodule.c 파일을 열어서 673라인의
if (_PyTuple_Resize(&r, i, 0) == -1) goto error; 의 내용중
세번째 parameter인 0을 삭제하세요
아래와 같이
if (_PyTuple_Resize(&r, i) == -1) goto error;
이렇게 하시면 됩니다. "

위와 같이 말씀하신 분이 있었는데 찾아봤는데 없는것 같던데요 ㅠ.ㅠ

[kawi@drill MySQL-python-0.9.2]$ grep PyTuple_Resize *
CHANGELOG: * In Python 2.2, the internal _PyTuple_Resize() dropped the (unused)
_mysql.c:# define MyTuple_Resize(t,n,d) _PyTuple_Resize(t, n, d)
_mysql.c:# define MyTuple_Resize(t,n,d) _PyTuple_Resize(t, n)


제 생각에는 mysql 을 다시 컴파일 해야 할듯 한데 mysql 컴파일을 한다면 어떻게 해야 하나요?

2틀 이것때문에 정신이 오락 가락 하네요 ㅠ.ㅠ

멋진 답변 기다리겠습니다.

==============================================
[kawi@drill MySQL-python-0.9.2]$ python2.3 setup.py build
running build
running build_py
creating build
creating build/lib.linux-i686-2.3
copying CompatMysqldb.py -> build/lib.linux-i686-2.3
copying _mysql_exceptions.py -> build/lib.linux-i686-2.3
creating build/lib.linux-i686-2.3/MySQLdb
copying MySQLdb/__init__.py -> build/lib.linux-i686-2.3/MySQLdb
copying MySQLdb/converters.py -> build/lib.linux-i686-2.3/MySQLdb
copying MySQLdb/connections.py -> build/lib.linux-i686-2.3/MySQLdb
copying MySQLdb/cursors.py -> build/lib.linux-i686-2.3/MySQLdb
copying MySQLdb/sets.py -> build/lib.linux-i686-2.3/MySQLdb
copying MySQLdb/times.py -> build/lib.linux-i686-2.3/MySQLdb
creating build/lib.linux-i686-2.3/MySQLdb/constants
copying MySQLdb/constants/__init__.py -> build/lib.linux-i686-2.3/MySQLdb/constants
copying MySQLdb/constants/CR.py -> build/lib.linux-i686-2.3/MySQLdb/constants
copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-i686-2.3/MySQLdb/constants
copying MySQLdb/constants/ER.py -> build/lib.linux-i686-2.3/MySQLdb/constants
copying MySQLdb/constants/FLAG.py -> build/lib.linux-i686-2.3/MySQLdb/constants
copying MySQLdb/constants/REFRESH.py -> build/lib.linux-i686-2.3/MySQLdb/constants
copying MySQLdb/constants/CLIENT.py -> build/lib.linux-i686-2.3/MySQLdb/constants
running build_ext
building '_mysql' extension
creating build/temp.linux-i686-2.3
gcc -pthread -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/include/mysql -I/usr/local/include/mysql -I/usr/local/mysql/include/mysql -I/usr/local/python/include/python2.3 -c _mysql.c -o build/temp.linux-i686-2.3/_mysql.o
_mysql.c:2007: warning: initialization from incompatible pointer type
_mysql.c:2096: warning: initialization from incompatible pointer type
gcc -pthread -shared build/temp.linux-i686-2.3/_mysql.o -L/usr/lib/mysql -L/usr/local/lib/mysql -L/usr/local/mysql/lib/mysql -lmysqlclient_r -lz -o build/lib.linux-i686-2.3/_mysql.so
/usr/bin/ld: cannot find -lmysqlclient_r
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1
[kawi@drill MySQL-python-0.9.2]$
==============================================
[kawi@drill MySQL-python-0.9.2]$ python2.3 setup.py build
running build
running build_py
running build_ext
building '_mysql' extension
gcc -pthread -shared build/temp.linux-i686-2.3/_mysql.o -L/usr/lib/mysql -L/usr/local/lib/mysql -L/usr/local/mysql/lib/mysql -lmysqlclient_r -lz -o build/lib.linux-i686-2.3/_mysql.so
/usr/bin/ld: cannot find -lmysqlclient_r
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1
[kawi@drill MySQL-python-0.9.2]$
위로
사용자 정보 보기 비밀 메시지 보내기    
nohmad



가입:
올린 글: 234

올리기올려짐: 2003 7월 24 10:12 pm    주제: ... 인용과 함께 답변

mysql 경로 지정이 잘못된 것입니다.
setup.py를 열어서
include_dirs, library_dirs 리스트에 있는 디렉토리들이 실제로 존재하는지,
그리고 실제로 mysql 관련 파일들이 존재하는지 꼭 확인해보십시요.
없다면 추가하시구요.

C로 된 소스를 고쳐야 한다거나 ld 명령이 따로 필요한 경우는
별로 바람직하지 못한 상황입니다.
_________________
장기적으로 우리는 모두 죽는다 - J. M. Keynes
위로
사용자 정보 보기 비밀 메시지 보내기     MSN 메신저
blackmir



가입:
올린 글: 16
소속: 아주대학교

올리기올려짐: 2003 7월 25 12:11 pm    주제: 인용과 함께 답변

인용:

gcc -pthread -shared build/temp.linux-i686-2.3/_mysql.o -L/usr/lib/mysql -L/usr/local/lib/mysql -L/usr/local/mysql/lib/mysql -lmysqlclient_r -lz -o build/lib.linux-i686-2.3/_mysql.so
/usr/bin/ld: cannot find -lmysqlclient_r
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1


라는 에러메시지가 발생했는데 잘 보시면
인용:

cannot find -lmysqlclient_r


이라는 에러 메시지가 보입니다.

setup.py 내의 23열에 보시면

인용:

23열
mysqlclient = thread_safe_library and "mysqlclient_r" or "mysqlclient"

36열
libraries = [mysqlclient, "z"]


라는 라인에서 보면 알 수 있듯이 thread_safe_library 가 참일 경우 mysqlclient_r 이라는 라이브러리를 링크하고, 그렇지 않을 경우 mysqlclient 라는 라이브러리를 링크하게 되어있습니다.

아마도 linux의 배포판등에서는 thread-safe한 라이브러리인 mysqlclient_r 이라는 라이브러리를 따로 컴파일 하든지, 아니면 지원을 안하는 것 같습니다.( 저의 의견일뿐입니다. 정확하지는 않습니다.)

따라서 mysqlclient를 링크하면 해결 될 것 같은데 setup.py의 14라인의 thread_safe_library = YES 를 thread_safe_library = NO 로 바꾸시면 제대로 컴파일 될 것 같습니다.

PS. 저도 MySQLdb를 깔다가 이런 문제를 겪었거든요. Twisted Evil [/quote]
위로
사용자 정보 보기 비밀 메시지 보내기     MSN 메신저
이전 글 표시:   
글 쓰기   답변 달기    파이썬 마을 게시판 인덱스 -> 파이썬 질문과 답변 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다



Powered by phpBB © 2001, 2005 phpBB Group
회선/장비: Daum DNA , 관리: 장혜식,서상현