Microsoft MVP성태의 닷넷 이야기
오류 유형: 865. 파이썬 - pymssql 설치 관련 오류 정리 [링크 복사], [링크+제목 복사],
조회: 4896
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)

파이썬 - pymssql 설치 관련 오류 정리

원래 설치는 이렇게 끝낼 수 있습니다.

$ python -m pip install pymssql
Defaulting to user installation because normal site-packages is not writeable
Collecting pymssql
  Downloading pymssql-2.2.7-cp311-cp311-manylinux_2_24_x86_64.whl (3.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.2/3.2 MB 8.8 MB/s eta 0:00:00
Installing collected packages: pymssql
Successfully installed pymssql-2.2.7




Python 3.8의 경우 2.1.0 ~ 2.1.4 버전을 설치할 때 이런 오류가 발생할 수 있습니다.

# pip install pymssql==2.1.0
Collecting pymssql==2.1.0
  Using cached pymssql-2.1.0.zip (2.5 MB)
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [10 lines of output]
      /usr/local/lib/python3.8/site-packages/setuptools/dist.py:51: DistDeprecationWarning: Do not call this function
        warnings.warn("Do not call this function", DistDeprecationWarning)
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/tmp/pip-install-r3vg2u62/pymssql_48a48fb60ec742fca2da191448d9bc72/setup.py", line 131, in <module>
          print("setup.py: platform.linux_distribution() => %r" % (platform.linux_distribution(),))
      AttributeError: module 'platform' has no attribute 'linux_distribution'
      setup.py: platform.system() => 'Linux'
      setup.py: platform.architecture() => ('64bit', 'ELF')
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

Python 3.7부터 완전히 삭제된 platform.linux_distribution을 사용하기 때문인데, 2.1.5 버전에서 수정했다고 합니다. 따라서 Python을 3.6 이하로 내리든가, 아니면 pymssql 버전을 2.1.5 이상의 버전을 사용해야 합니다.




파이썬의 버전에 따라 2.0.0 ~ 2.2.0 버전을 설치하는 경우 다음의 문제가 발생한다면?

$ python3.11 -m pip install pymssql==2.2.0
...[생략]...
      x86_64-linux-gnu-gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -I/usr/include/python3.11 -c src/pymssql/_mssql.c -o build/temp.linux-x86_64-cpython-311/src/pymssql/_mssql.o -DMSDBLIB
      src/pymssql/_mssql.c:747:10: fatal error: sqlfront.h: No such file or directory
        747 | #include "sqlfront.h"
            |          ^~~~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pymssql
Failed to build pymssql
ERROR: Could not build wheels for pymssql, which is required to install pyproject.toml-based projects

다행히 해결 방법이 있고,

failed to build: Cannot open include file: 'sqlfront.h': No such file or directory #372
; https://github.com/pymssql/pymssql/issues/372

Ubuntu의 경우, freetds-dev를 다음과 같이 설치하면 됩니다.

$ sudo apt install freetds-dev




마지막으로 2.0.0 버전 이하를 설치하면 아래와 같이 복잡한 오류가 발생하는 경우도 있을 것입니다.

# pip install pymssql==2.0.0
Collecting pymssql==2.0.0
  Using cached pymssql-2.0.0.zip (2.4 MB)
  Preparing metadata (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/local/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-o_z_7v5i/pymssql_35aeb37a9a8e46b098a7d5cbf4b78fbb/setup.py'"'"'; __file__='"'"'/tmp/pip-install-o_z_7v5i/pymssql_35aeb37a9a8e46b098a7d5cbf4b78fbb/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-dcnnrk4u
       cwd: /tmp/pip-install-o_z_7v5i/pymssql_35aeb37a9a8e46b098a7d5cbf4b78fbb/
  Complete output (14 lines):
  /usr/local/lib/python3.6/site-packages/setuptools/dist.py:51: DistDeprecationWarning: Do not call this function
    warnings.warn("Do not call this function", DistDeprecationWarning)
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/tmp/pip-install-o_z_7v5i/pymssql_35aeb37a9a8e46b098a7d5cbf4b78fbb/setup.py", line 412, in <module>
      long_description = open('README.rst').read() +"\n\n" + open('ChangeLog_highlights.rst').read(),
  FileNotFoundError: [Errno 2] No such file or directory: 'ChangeLog_highlights.rst'
  setup.py: platform.system() => 'Linux'
  setup.py: platform.architecture() => ('64bit', 'ELF')
  setup.py: platform.linux_distribution() => ('debian', '10.12', '')
  setup.py: platform.libc_ver() => ('glibc', '2.2.5')
  setup.py: Not using bundled FreeTDS
  setup.py: include_dirs = ['/usr/local/include']
  setup.py: library_dirs = ['/usr/local/lib']
  ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/43/8a/39276b764d4f57ea1950c600a87c567ab5e1ec70c646390084f9a26ec74e/pymssql-2.0.0.zip#sha256=848341594f399d9cf6dd47663e01403b22ac6cffe80914d10f3b6cc1dd43b8f4 (from https://pypi.org/simple/pymssql/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  Using cached pymssql-2.0.0.tar.gz (2.4 MB)
  Preparing metadata (setup.py) ... done
Building wheels for collected packages: pymssql
  Building wheel for pymssql (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/local/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-o_z_7v5i/pymssql_3da1f94548ef4cc7be30c239703c18ae/setup.py'"'"'; __file__='"'"'/tmp/pip-install-o_z_7v5i/pymssql_3da1f94548ef4cc7be30c239703c18ae/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-rs7um03z
       cwd: /tmp/pip-install-o_z_7v5i/pymssql_3da1f94548ef4cc7be30c239703c18ae/
  Complete output (27 lines):
  /usr/local/lib/python3.6/site-packages/setuptools/dist.py:51: DistDeprecationWarning: Do not call this function
    warnings.warn("Do not call this function", DistDeprecationWarning)
  setup.py: platform.system() => 'Linux'
  setup.py: platform.architecture() => ('64bit', 'ELF')
  setup.py: platform.linux_distribution() => ('debian', '10.12', '')
  setup.py: platform.libc_ver() => ('glibc', '2.2.5')
  setup.py: Not using bundled FreeTDS
  setup.py: include_dirs = ['/usr/local/include']
  setup.py: library_dirs = ['/usr/local/lib']
  running bdist_wheel
  running build
  running build_ext
  building '_mssql' extension
  creating build
  creating build/temp.linux-x86_64-3.6
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/usr/local/include -I/usr/local/include/python3.6m -c _mssql.c -o build/temp.linux-x86_64-3.6/_mssql.o -DMSDBLIB
  _mssql.c: In function ‘__pyx_f_6_mssql__tds_ver_str_to_constant’:
  _mssql.c:15426:15: error: ‘DBVERSION_80’ undeclared (first use in this function); did you mean ‘DBVERSION_70’?
       __pyx_r = DBVERSION_80;
                 ^~~~~~~~~~~~
                 DBVERSION_70
  _mssql.c:15426:15: note: each undeclared identifier is reported only once for each function it appears in
  At top level:
  _mssql.c:3331:12: warning: ‘__pyx_f_6_mssql_db_sqlexec’ defined but not used [-Wunused-function]
   static int __pyx_f_6_mssql_db_sqlexec(DBPROCESS *__pyx_v_dbproc) {
              ^~~~~~~~~~~~~~~~~~~~~~~~~~
  error: command 'gcc' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for pymssql
  Running setup.py clean for pymssql
Failed to build pymssql
Installing collected packages: pymssql
    Running setup.py install for pymssql ... error
    ERROR: Command errored out with exit status 1:
     command: /usr/local/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-o_z_7v5i/pymssql_3da1f94548ef4cc7be30c239703c18ae/setup.py'"'"'; __file__='"'"'/tmp/pip-install-o_z_7v5i/pymssql_3da1f94548ef4cc7be30c239703c18ae/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-yql3imw_/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.6m/pymssql
         cwd: /tmp/pip-install-o_z_7v5i/pymssql_3da1f94548ef4cc7be30c239703c18ae/
    Complete output (27 lines):
    /usr/local/lib/python3.6/site-packages/setuptools/dist.py:51: DistDeprecationWarning: Do not call this function
      warnings.warn("Do not call this function", DistDeprecationWarning)
    setup.py: platform.system() => 'Linux'
    setup.py: platform.architecture() => ('64bit', 'ELF')
    setup.py: platform.linux_distribution() => ('debian', '10.12', '')
    setup.py: platform.libc_ver() => ('glibc', '2.2.5')
    setup.py: Not using bundled FreeTDS
    setup.py: include_dirs = ['/usr/local/include']
    setup.py: library_dirs = ['/usr/local/lib']
    running install
    running build
    running build_ext
    building '_mssql' extension
    creating build
    creating build/temp.linux-x86_64-3.6
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/usr/local/include -I/usr/local/include/python3.6m -c _mssql.c -o build/temp.linux-x86_64-3.6/_mssql.o -DMSDBLIB
    _mssql.c: In function ‘__pyx_f_6_mssql__tds_ver_str_to_constant’:
    _mssql.c:15426:15: error: ‘DBVERSION_80’ undeclared (first use in this function); did you mean ‘DBVERSION_70’?
         __pyx_r = DBVERSION_80;
                   ^~~~~~~~~~~~
                   DBVERSION_70
    _mssql.c:15426:15: note: each undeclared identifier is reported only once for each function it appears in
    At top level:
    _mssql.c:3331:12: warning: ‘__pyx_f_6_mssql_db_sqlexec’ defined but not used [-Wunused-function]
     static int __pyx_f_6_mssql_db_sqlexec(DBPROCESS *__pyx_v_dbproc) {
                ^~~~~~~~~~~~~~~~~~~~~~~~~~
    error: command 'gcc' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /usr/local/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-o_z_7v5i/pymssql_3da1f94548ef4cc7be30c239703c18ae/setup.py'"'"'; __file__='"'"'/tmp/pip-install-o_z_7v5i/pymssql_3da1f94548ef4cc7be30c239703c18ae/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-yql3imw_/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.6m/pymssql Check the logs for full command output.

아래의 글에도 나오지만,

pymssql-2.1.3 ‘DBVERSION_80’ undeclared (first use in this function); did you mean ‘DBVERSION_70’? 
; https://github.com/pymssql/pymssql/issues/520

"/usr/include/sybdb.h" 파일의 내용에서 DBVERSION_80 상수를 이런 식으로,

#define DBVERSION_80 DBVERSION_71

추가해 주면 됩니다. 혹은 그냥, 아예 2.1.4 버전을 설치하는 것이 더 좋겠습니다.




이후 대략적인 사용법은 아래의 글을 참고하시고. ^^

MSSQL 사용
; http://pythonstudy.xyz/python/article/208-MSSQL-사용




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 8/10/2023]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 16  17  18  19  20  21  22  23  24  25  26  [27]  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
12977정성태2/21/202211448.NET Framework: 1160. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 qsv 디코딩
12976정성태2/21/20227043VS.NET IDE: 174. Visual C++ - "External Dependencies" 노드 비활성화하는 방법
12975정성태2/20/20228751.NET Framework: 1159. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 qsvdec.c 예제 포팅파일 다운로드1
12974정성태2/20/20226865.NET Framework: 1158. C# - SqlConnection의 최소 Pooling 수를 초과한 DB 연결은 언제 해제될까요?
12973정성태2/16/20229250개발 환경 구성: 639. ffmpeg.exe - Intel Quick Sync Video(qsv)를 이용한 인코딩 [3]
12972정성태2/16/20228592Windows: 200. Intel CPU의 내장 그래픽 GPU가 작업 관리자에 없다면? [4]
12971정성태2/15/202210219.NET Framework: 1157. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 muxing.c 예제 포팅 [7]파일 다운로드2
12970정성태2/15/20228296.NET Framework: 1156. C# - ffmpeg(FFmpeg.AutoGen): Bitmap으로부터 h264 형식의 파일로 쓰기 [1]파일 다운로드1
12969정성태2/14/20226778개발 환경 구성: 638. Visual Studio의 Connection Manager 기능(Remote SSH 관리)을 위한 명령행 도구 - 두 번째 이야기파일 다운로드1
12968정성태2/14/20227028오류 유형: 794. msbuild 에러 - error NETSDK1005: Assets file '...\project.assets.json' doesn't have a target for '...'.
12967정성태2/14/20227418VC++: 153. Visual C++ - C99 표준의 Compund Literals 빌드 방법 [4]
12966정성태2/13/20227221.NET Framework: 1155. C# - ffmpeg(FFmpeg.AutoGen): Bitmap으로부터 yuv420p + rawvideo 형식의 파일로 쓰기파일 다운로드1
12965정성태2/13/20227232.NET Framework: 1154. "Hanja Hangul Project v1.01 (파이썬)"의 C# 버전
12964정성태2/11/20227510.NET Framework: 1153. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 avio_reading.c 예제 포팅파일 다운로드1
12963정성태2/11/20228267.NET Framework: 1152. C# - 화면 캡처한 이미지를 ffmpeg(FFmpeg.AutoGen)로 동영상 처리 (저해상도 현상 해결)파일 다운로드1
12962정성태2/9/20228134오류 유형: 793. 마이크로소프트 스토어 - 제품이 존재하지 않습니다. 재고가 없는 것일 수 있습니다.
12961정성태2/8/20228271.NET Framework: 1151. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 비디오 프레임의 크기 및 포맷 변경 예제(scaling_video.c) [7]파일 다운로드1
12960정성태2/8/20227666개발 환경 구성: 637. ffmpeg(FFmpeg.AutoGen)를 이용한 비디오 디코딩 예제(decode_video.c) - 세 번째 이야기
12959정성태2/7/20228379.NET Framework: 1150. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 비디오 디코딩 예제(decode_video.c) - 두 번째 이야기 [2]파일 다운로드1
12958정성태2/6/20228395.NET Framework: 1149. C# - ffmpeg(FFmpeg.AutoGen) - 비디오 프레임 디코딩 [2]파일 다운로드1
12957정성태2/6/20228017개발 환경 구성: 636. ffmpeg.exe를 이용해 planar 포맷의 데이터를 packed 형식으로 변환하는 방법? [2]
12956정성태2/4/20227250.NET Framework: 1148. C# - ffmpeg(FFmpeg.AutoGen) - decoding 과정 [2]파일 다운로드1
12955정성태2/4/20226704개발 환경 구성: 635. 비주얼 스튜디오에서 실행하던 ASP.NET Core (.NET Framework) 응용 프로그램을 명령행에서 실행하는 방법 (2)
12954정성태2/4/20226521VS.NET IDE: 173. 비주얼 스튜디오 - Output 창에 색상이 지정된 출력 결과가 "[39m[22m" 식의 문자로 나오는 문제
12953정성태2/2/20226724Linux: 48. Windows 11 + WSL 우분투 GUI 환경에서 한글 출력
12952정성태2/2/20227260.NET Framework: 1148. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 오디오 필터 예제(filter_audio.c)파일 다운로드1
... 16  17  18  19  20  21  22  23  24  25  26  [27]  28  29  30  ...