作者:fjy69 | 来源:互联网 | 2023-05-18 07:00
各位:我本来在windows下写了个程序用于访问sqlserver,现在要移植到linux下,有人说的pymssql我也看了一点资料。并且在linux下安装了freedts和unixod
各位:
我本来在windows下写了个程序用于访问sql server,现在要移植到linux下,有人说的pymssql我也看了一点资料。并且在linux下安装了freedts 和unixodbc包。但有两个疑惑:下载的pymssql包tar之后就四个文件,不能编译,不知道是否需要编译。 疑惑2:在linux下执行测试程序时报错:Traceback (most recent call last):
File "test.py", line 1, in ?
import pymssql
File "/home/lee/pymssql-0.6.0/pymssql.py", line 22, in ?
import _mssql
ImportError: No module named _mssql
不知道为什么没有_mssql模块阿?
7 个解决方案
当然需要编译了, _mssql就是编译后的extension module,由mssqldbmodule.c编译生成。请把编译时所显示错误贴上来!以便看看是否能够解决。
在下载并解压后的pymssql里只有mssqldbmodule.c PKG-INFO pymssql.py setup.py 四个文件.
但我想知道,是用python对这些文件编译,还是就只是gcc mssqldbmodule阿??请指教,谢谢.
直接执行
python setup.py install就可以了
python中的distutil会自动编译的,不用自己编译
如果编译出现问题,那么请把详细信息贴出来,这样好分析问题。
[root@ksglab pymssql-0.6.0]# python setup.py install
running install
running build
running build_py
creating build
creating build/lib.linux-i686-2.3
copying pymssql.py -> build/lib.linux-i686-2.3
running build_ext
building '_mssql' extension
creating build/temp.linux-i686-2.3
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/include -I/usr/local/include -I/usr/include/freetds -I/usr/local/include/freetds -I/usr/local/include/python2.3 -c mssqldbmodule.c -o build/temp.linux-i686-2.3/mssqldbmodule.o
mssqldbmodule.c:57: warning: function declaration isn't a prototype
mssqldbmodule.c:58: warning: function declaration isn't a prototype
mssqldbmodule.c:80: warning: function declaration isn't a prototype
mssqldbmodule.c:108: warning: function declaration isn't a prototype
mssqldbmodule.c: In function `msg_handler':
mssqldbmodule.c:118: warning: long int format, DBINT arg (arg 3)
mssqldbmodule.c: At top level:
mssqldbmodule.c:125: warning: function declaration isn't a prototype
mssqldbmodule.c:247: warning: function declaration isn't a prototype
gcc -pthread -shared build/temp.linux-i686-2.3/mssqldbmodule.o -L/usr/lib -L/usr/local/lib -L/usr/lib/freetds -L/usr/local/lib/freetds -lsybdb -o build/lib.linux-i686-2.3/_mssql.so
running install_lib
copying build/lib.linux-i686-2.3/pymssql.py -> /usr/local/lib/python2.3/site-packages
copying build/lib.linux-i686-2.3/_mssql.so -> /usr/local/lib/python2.3/site-packages
byte-compiling /usr/local/lib/python2.3/site-packages/pymssql.py to pymssql.pyc
以上是编译信息.
但在重新执行测试程序时又报错:
[root@ksglab pymssql-0.6.0]# python test.py
Traceback (most recent call last):
File "test.py", line 1, in ?
import pymssql
File "/home/lee/pymssql-0.6.0/pymssql.py", line 22, in ?
import _mssql
ImportError: libsybdb.so.4: cannot open shared object file: No such file or directory