Проблемы с командой ldconfig и grep в инициализаторе Python2 .7 - PullRequest
0 голосов
/ 06 августа 2020

Вопрос + Код

Я пытаюсь установить пакет библиотеки python под названием PlasmaKin ( здесь ). Он основан на Linux и использует синтаксис Python 2.7. Моя проблема заключается в init .py-, показанном ниже. (В пакет входят pkg95.py и pkgfortran.py.) Я использую Python через 64-разрядную версию Cygwin, поэтому условие os.name = 'posix' верно. Моя основная проблема определяется следующей командой, определяющей libpath.

#import sys, os
import os
from ctypes.util import find_library

# Select PlasmaKin library full pathname
if os.name == 'posix':
    # In Unix-type OS find_library doesn't return the full pathname. So we need
    # to ask ldconfig...
    libpath = os.popen('ldconfig -p | grep libck-','r').split()[3]
elif os.name == 'nt':
    libpath = find_library("libck.dll")
# Detect which compiler has been used to compile the library and import the
# module with the corresponding function interfaces.
if os.system('grep gfortran %s -q' % libpath) == 0:
    #import pkgfortran as pk
    from pkgfortran import *
elif os.system('grep g95 %s -q' % libpath) == 0:
    #import pkg95 as pk
    from pkg95 import *
elif os.system('grep intel %s -q' % libpath) == 0:
     #import pkifort as pk
    from pkifort import *
else:
    dummy = os.popen('nm %s |grep _st_open' % libpath,'r').read().split('_')
    raise Exception('Sorry, no implementation for the compiler (%s) used for %s' % (dummy,libpath))

Когда я запускаю программу в Cygwin, мне отображается следующее сообщение об ошибке. Я пробовал возиться с частью '.split () [3]', но при ее удалении возвращается " >> / bin / sh: ldconfig: command not found "

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/pypk/__init__.py", line 16, in <module>
libpath = os.popen('ldconfig -p | grep libck-','r').split()[3]
AttributeError: 'file' object has no attribute 'split'

Попытка решения

Моя попытка решения заключалась в запуске кода в моем приглашении Anaconda (Windows OS, os.name = 'nt'), но это просто возвращает ошибку, что grep не является распознанная команда (я попытался заменить ее Windows -дружественной альтернативой grep, но безуспешно). Также упомянутая игра с '.split () [3]' показала, что lbconfig не может быть найден. Я также видел в некоторых источниках, что lbconfig не включен в Cygwin; если это правда, как я могу обойти это?

Установка пакета вручную не вернула никаких ошибок, и кажется, что проблема основана на отсутствующем или нескомпилированном lbconfig или libck.dll (для мои тесты Cygwin и Anaconda соответственно). Приведенная выше ссылка ведет на сайт PlasmaKin вместе со ссылкой на этой странице для загрузки SourceForge, если вы заинтересованы в его тестировании. Эта программа важна для моего исследования, и я ценю любой конструктивный отзыв.

...