 |
파이썬 마을 우리나라 파이썬 사용자들의 이야기 마을
|
|
| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
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 |
|
| 위로 |
|
 |
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를 깔다가 이런 문제를 겪었거든요. [/quote] |
|
| 위로 |
|
 |
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
|