Kompilieren von psutil in eine .pyd Datei
Verfasst: Donnerstag 15. Dezember 2022, 14:17
Hallo zusammen ,
ich habe ein Problem, bei dem ich gerade nicht weiterkomme.
Ich möchte ein .pyd File erzeugen, das aus dem Modul psutil besteht.
Man kann psutil einfach installieren, aber diese Möglichkeit besteht bei mir nicht, da ich in dem System nichts installieren kann (Keine Rechte).
Nun habe ich versucht ein .pyd Format aus psutil zu erzeugen (per setuptools)
Zunächst habe ich alle .py Dateien in .c Dateien per cythonize umgewandelt.
Mein Code:
######################
from setuptools import Extension, setup, find_packages
from Cython.Build import cythonize
from Cython.Distutils import build_ext
packages = find_packages()
print(packages)
init = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\__init__.c"],
include_dirs=['include']
)
common = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_common.c"],
include_dirs=['include']
)
compat = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_compat.c"],
include_dirs=['include']
)
psaix = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_psaix.c"],
include_dirs=['include']
)
psbsd = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_psbsd.c"],
include_dirs=['include']
)
pslinux = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_pslinux.c"],
include_dirs=['include']
)
psosx = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_psosx.c"],
include_dirs=['include']
)
psposix = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_psposix.c"],
include_dirs=['include']
)
pssunos = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_pssunos.c"],
include_dirs=['include']
)
pswindows = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_pswindows.c"],
include_dirs=['include']
)
setup(name='pyutil_comp',
author="xxx",
author_email="xxx",
version='1.0',
description='compile psutil',
packages=packages,
ext_modules=[init, common, compat, psaix, psbsd, pslinux, psosx, psposix, pssunos, pswindows],
)
###################################
zum kompilieren der .c habe ich denselben Code verwendet, bloß mit ext_modules=cythonize() für jede einzelne Datei.
Es wurde auch ein .pyd File erzeugt, welches ich in dem Pfad D:\testumgebung\code\psutil_comp hinterlegt habe. Beim ausführen erkennt das Script aber net_connections
nicht.
#############################################
import sys
sys.path.append(r'D:\testumgebung\code\psutil_comp')
import psutil
for port in psutil.net_connections(kind='tcp'):
if port.laddr[1] == 5112 and port.pid != 0:
print(port)
#############################################
Fehlermeldung:
Traceback (most recent call last):
File "D:\testumgebung\code\psutil_comp\check_psutil.py", line 6, in <module>
for port in psutil.net_connections(kind='tcp'):
AttributeError: module 'psutil' has no attribute 'net_connections'
Kann mir vielleicht jemand weiterhelfen?
Danke für eure Hilfe
Viele Grüße
ich habe ein Problem, bei dem ich gerade nicht weiterkomme.
Ich möchte ein .pyd File erzeugen, das aus dem Modul psutil besteht.
Man kann psutil einfach installieren, aber diese Möglichkeit besteht bei mir nicht, da ich in dem System nichts installieren kann (Keine Rechte).
Nun habe ich versucht ein .pyd Format aus psutil zu erzeugen (per setuptools)
Zunächst habe ich alle .py Dateien in .c Dateien per cythonize umgewandelt.
Mein Code:
######################
from setuptools import Extension, setup, find_packages
from Cython.Build import cythonize
from Cython.Distutils import build_ext
packages = find_packages()
print(packages)
init = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\__init__.c"],
include_dirs=['include']
)
common = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_common.c"],
include_dirs=['include']
)
compat = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_compat.c"],
include_dirs=['include']
)
psaix = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_psaix.c"],
include_dirs=['include']
)
psbsd = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_psbsd.c"],
include_dirs=['include']
)
pslinux = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_pslinux.c"],
include_dirs=['include']
)
psosx = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_psosx.c"],
include_dirs=['include']
)
psposix = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_psposix.c"],
include_dirs=['include']
)
pssunos = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_pssunos.c"],
include_dirs=['include']
)
pswindows = Extension(
'psutils',
sources=[r"D:\testumgebung\venv\Lib\site-packages\psutil\_pswindows.c"],
include_dirs=['include']
)
setup(name='pyutil_comp',
author="xxx",
author_email="xxx",
version='1.0',
description='compile psutil',
packages=packages,
ext_modules=[init, common, compat, psaix, psbsd, pslinux, psosx, psposix, pssunos, pswindows],
)
###################################
zum kompilieren der .c habe ich denselben Code verwendet, bloß mit ext_modules=cythonize() für jede einzelne Datei.
Es wurde auch ein .pyd File erzeugt, welches ich in dem Pfad D:\testumgebung\code\psutil_comp hinterlegt habe. Beim ausführen erkennt das Script aber net_connections
nicht.
#############################################
import sys
sys.path.append(r'D:\testumgebung\code\psutil_comp')
import psutil
for port in psutil.net_connections(kind='tcp'):
if port.laddr[1] == 5112 and port.pid != 0:
print(port)
#############################################
Fehlermeldung:
Traceback (most recent call last):
File "D:\testumgebung\code\psutil_comp\check_psutil.py", line 6, in <module>
for port in psutil.net_connections(kind='tcp'):
AttributeError: module 'psutil' has no attribute 'net_connections'
Kann mir vielleicht jemand weiterhelfen?
Danke für eure Hilfe
Viele Grüße