Microsoft MVP성태의 닷넷 이야기
오류 유형: 829. uwsgi 설치 시 fatal error: Python.h: No such file or directory [링크 복사], [링크+제목 복사],
조회: 14214
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

uwsgi 설치 시 fatal error: Python.h: No such file or directory

uwsgi도 python의 모듈로 설치되는데요, 예를 들어 python 3.11을 적용한 웹 애플리케이션을 만들어도 기존 환경의 uwsgi를 실행하면,

$ ~/.local/bin/uwsgi --py-autoreload=3 --http-socket :18091 --chdir /testprj/django --wsgi-file ./testprj/wsgi.py
*** Starting uWSGI 2.0.20 (64bit) on [Sat Nov 26 13:58:37 2022] ***
compiled with version: 9.4.0 on 10 May 2022 06:47:13
os: Linux-5.15.74.2-microsoft-standard-WSL2 #1 SMP Sat Nov 2 19:50:29 UTC 2022
nodename: testusr10
machine: x86_64
clock source: unix
detected number of CPU cores: 16
current working directory: /testprj/django
detected binary path: /home/testusr/.local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
chdir() to /testprj/django
your processes number limit is 126951
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to TCP address :18091 fd 3
Python version: 3.8.10 (default, Jun 22 2022, 20:18:18)  [GCC 9.4.0]
Python main interpreter initialized at 0x564cccc076e0
python threads support enabled
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 145808 bytes (142 KB) for 1 cores
*** Operational MODE: single process ***
WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x564cccc076e0 pid: 9810 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 9810)
spawned uWSGI worker 1 (pid: 9812, cores: 1)
Python auto-reloader enabled

웹 애플리케이션과 상관없이 uwsgi를 설치한 python 환경으로 실행됩니다. 따라서, 다음과 같이 명시적으로 해당 파이썬의 버전으로 uwsgi 모듈을 설치해야 합니다.

$ python3.11 -m pip install uwsgi
Defaulting to user installation because normal site-packages is not writeable
Collecting uwsgi
  Using cached uwsgi-2.0.21.tar.gz (808 kB)
  Preparing metadata (setup.py) ... done
Building wheels for collected packages: uwsgi
  Building wheel for uwsgi (setup.py) ... done
  Created wheel for uwsgi: filename=uWSGI-2.0.21-cp311-cp311-linux_x86_64.whl size=554642 sha256=22a639e9ace98d52ba5442af5a7b8e2a43eca2c3270d5a929e41cc63c374d211
  Stored in directory: /home/testusr/.cache/pip/wheels/ee/d7/0c/3abf1fe02439b5d37adf23207499340f89c5120bde5fc474f6
Successfully built uwsgi
Installing collected packages: uwsgi
Successfully installed uwsgi-2.0.21

이후 다시 실행하면 정상적으로 3.11 버전의 파이썬 환경이 적용되는 것을 확인할 수 있습니다.

$ /home/testusr/.local/bin/uwsgi --py-autoreload=3 --http-socket :18091 --chdir /testprj/django --wsgi-file ./testprj/wsgi.py
*** Starting uWSGI 2.0.21 (64bit) on [Sat Nov 26 14:13:50 2022] ***
compiled with version: 9.4.0 on 26 November 2022 05:11:23
...[생략]...
Python version: 3.11.0 (main, Oct 24 2022, 19:55:51) [GCC 9.4.0]
Python main interpreter initialized at 0x7f66d4e8c838
...[생략]...




참고로, uwsgi 설치 시 다음과 같은 오류가 발생한다면?

$ python3.11 -m pip install uwsgi
Defaulting to user installation because normal site-packages is not writeable
Collecting uwsgi
  Using cached uwsgi-2.0.21.tar.gz (808 kB)
  Preparing metadata (setup.py) ... done
Building wheels for collected packages: uwsgi
  Building wheel for uwsgi (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [157 lines of output]
      /usr/lib/python3.11/distutils/dist.py:274: UserWarning: Unknown distribution option: 'descriptions'
        warnings.warn(msg)
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib
      copying uwsgidecorators.py -> build/lib
      installing to build/bdist.linux-x86_64/wheel
      running install
      using profile: buildconf/default.ini
      detected include path: ['/usr/lib/gcc/x86_64-linux-gnu/9/include', '/usr/local/include', '/usr/include/x86_64-linux-gnu', '/usr/include']
      Patching "bin_name" to properly install_scripts dir
      detected CPU cores: 16
      configured CFLAGS: -O2 -I. -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -DUWSGI_HAS_IFADDRS -DUWSGI_ZLIB -DUWSGI_LOCK_USE_MUTEX -DUWSGI_EVENT_USE_EPOLL ...[생략]...(transformation_template);ULEP(stats_pusher_socket);"
      *** uWSGI compiling server core ***
      [thread 1][x86_64-linux-gnu-gcc -pthread] core/master.o
      ...[생략]...
      [thread 6][x86_64-linux-gnu-gcc -pthread] core/config_py.o
      *** uWSGI compiling embedded plugins ***
      [thread 12][x86_64-linux-gnu-gcc -pthread] plugins/python/pyutils.o
      ...[생략]...
      [thread 1][x86_64-linux-gnu-gcc -pthread] plugins/python/uwsgi_pymodule.o
      In file included from plugins/python/pyutils.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      [thread 4][x86_64-linux-gnu-gcc -pthread] plugins/python/profiler.o
      In file included from plugins/python/python_plugin.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/pyloader.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/wsgi_handlers.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/wsgi_headers.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/wsgi_subhandler.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/web3_subhandler.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/gil.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/pump_subhandler.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/uwsgi_pymodule.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/profiler.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for uwsgi
  Running setup.py clean for uwsgi
Failed to build uwsgi
Installing collected packages: uwsgi
  Running setup.py install for uwsgi ... error
  error: subprocess-exited-with-error

  × Running setup.py install for uwsgi did not run successfully.
  │ exit code: 1
  ╰─> [182 lines of output]
      /usr/lib/python3.11/distutils/dist.py:274: UserWarning: Unknown distribution option: 'descriptions'
        warnings.warn(msg)
      running install
      using profile: buildconf/default.ini
      detected include path: ['/usr/lib/gcc/x86_64-linux-gnu/9/include', '/usr/local/include', '/usr/include/x86_64-linux-gnu', '/usr/include']
      Patching "bin_name" to properly install_scripts dir
      detected CPU cores: 16
      configured CFLAGS: -O2 -I. -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wextra -Wno-unused-parameter ...[생략]... ULEP(transformation_template);ULEP(stats_pusher_socket);"
      *** uWSGI compiling server core ***
      core/utils.o is up to date
      ...[생략]...
      core/xmlconf.o is up to date
      [thread 2][x86_64-linux-gnu-gcc -pthread] core/dot_h.o
      [thread 3][x86_64-linux-gnu-gcc -pthread] core/config_py.o
      *** uWSGI compiling embedded plugins ***
      [thread 1][x86_64-linux-gnu-gcc -pthread] plugins/python/wsgi_headers.o
      ...[생략]...
      [thread 3][x86_64-linux-gnu-gcc -pthread] plugins/gevent/hooks.o
      In file included from plugins/python/pyloader.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/pyutils.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/python_plugin.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/wsgi_headers.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/wsgi_handlers.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/gil.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/uwsgi_pymodule.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/wsgi_subhandler.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/symimporter.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/pump_subhandler.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/raw.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/web3_subhandler.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/python/tracebacker.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      In file included from plugins/python/profiler.c:1:
      plugins/python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      compilation terminated.
      In file included from plugins/gevent/gevent.h:1,
                       from plugins/gevent/hooks.c:1:
      plugins/gevent/../python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      In file included from plugins/gevent/gevent.h:1,
                       from plugins/gevent/gevent.c:1:
      plugins/gevent/../python/uwsgi_python.h:4:10: fatal error: Python.h: No such file or directory
          4 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> uwsgi

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

아래의 글에서처럼,

fatal error: Python.h: No such file or directory
; https://stackoverflow.com/questions/21530577/fatal-error-python-h-no-such-file-or-directory

python-dev가 없기 때문입니다. 따라서, 다음과 같은 식으로 설치해 주시면 됩니다.

$ sudo apt-get install python3.11-dev  # for python3.11 installs




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







[최초 등록일: ]
[최종 수정일: 11/30/2022]

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

비밀번호

댓글 작성자
 




... 151  152  153  154  155  156  [157]  158  159  160  161  162  163  164  165  ...
NoWriterDateCnt.TitleFile(s)
1125정성태9/17/201126211Windows: 54. Windows 8 개발자 Preview를 사용해 보고... [2]
1124정성태9/17/201126546.NET Framework: 240. System.Collections.ArrayList가 .NET 4.5에서 지원이 안된다??? [2]
1123정성태9/17/201165280Windows: 53. 2가지 모드의 Internet Explorer 10과 ActiveX [6]
1122정성태9/16/201132945Windows: 52. 새롭게 지원되는 WinRT 응용 프로그램 [7]
1121정성태9/12/201127771Java: 5. WTP 내에서 서블릿을 실행하는 환경
1120정성태9/11/201127675.NET Framework: 239. IHttpHandler.IsReusable 속성 이야기파일 다운로드1
1119정성태9/11/201126800Java: 4. 이클립스에 WTP SDK가 설치되지 않는다면? [2]
1118정성태9/11/201138473Java: 3. 이클립스에서 서블릿 디버깅하는 방법 [4]
1117정성태9/9/201125766제니퍼 .NET: 17. 제니퍼 닷넷 적용 사례 (2) - 웹 애플리케이션 hang의 원인을 알려주다.
1116정성태9/8/201156856Java: 2. 자바에서 "Microsoft SQL Server JDBC Driver" 사용하는 방법
1115정성태9/4/201130311Java: 1. 닷넷 개발자가 처음 실습해 본 서블릿
1114정성태9/4/201134797Math: 2. "Zhang Suen 알고리즘(세선화, Thinning/Skeletonization)"의 C# 버전 [4]파일 다운로드1
1113정성태9/2/201134399개발 환경 구성: 129. Hyper-V에 CentOS 설치하기
1112정성태9/2/201151126Linux: 1. 리눅스 <-> 윈도우 원격 접속 프로그램 사용 [3]
1111정성태8/29/201125610제니퍼 .NET: 16. 적용 사례 (1) - DB Connection Pooling을 사용하지 않았을 때의 성능 저하를 알려주다. [1]
1110정성태8/26/201126953오류 유형: 136. RDP 접속이 불연속적으로 끊기는 문제
1109정성태8/26/201129742오류 유형: 135. 어느 순간 Active Directory 접속이 안되는 문제
1108정성태8/22/201131191오류 유형: 134. OLE/COM Object Viewer - DllRegisterServer in IVIEWERS.DLL failed. [1]
1107정성태8/21/201129073디버깅 기술: 43. Windows Form의 Load 이벤트에서 발생하는 예외가 Visual Studio에서 잡히지 않는 문제
1106정성태8/20/201127329웹: 26. FailedRequestTracing 설정으로 인한 iisexpress.exe 비정상 종료 문제
1105정성태8/19/201127262.NET Framework: 238. Web Site Model 프로젝트에서 Trace.WriteLine 출력이 dbgview.exe에서 확인이 안 되는 문제파일 다운로드1
1104정성태8/19/201127485웹: 25. WebDev보다 IIS Express가 더 나은 점 - 다중 가상 디렉터리 매핑 [1]
1103정성태8/19/201133410오류 유형: 133. WCF 포트 바인딩 실패 오류 - TCP error(10013) [1]
1102정성태8/19/201131127Math: 1. 방탈출3 - Room 10의 '중복가능한 조합' 문제를 위한 C# 프로그래밍 [2]파일 다운로드1
1101정성태8/19/201129823.NET Framework: 237. WCF AJAX 서비스와 JavaScript 간의 DateTime 연동 [1]파일 다운로드1
1100정성태8/17/201128954.NET Framework: 236. SqlDbType - DateTime, DateTime2, DateTimeOffset의 차이점파일 다운로드1
... 151  152  153  154  155  156  [157]  158  159  160  161  162  163  164  165  ...