Таким образом, лучшее, что вы можете сделать, это создать файл блокировки при запуске резервного копирования и удалить его в конце скрипта. Конечно, перед созданием вы должны проверить, существует ли файл блокировки, и просто остановить скрипт, если да. Будьте осторожны, проверяйте, когда сценарий уничтожается извне, а файл блокировки все еще существует.
Мне нужно было просто подождать, пока утром у меня не прояснится голова. Я смог отследить недостающую часть здесь:
Установить C _ВКЛЮЧИТЬ _ПУТЬ
setenv C_INCLUDE_PATH $HOME/LIBRARIES/include
Спасибо за помощь telcoM! Я бы застрял в неправильном пути, пытаясь найти -причину этого.
У меня была точно такая же проблема.
build/lib.linux-x86_64-3.9/_ctypes.cpython-39-x86_64-linux-gnu.so
будет сгенерирован make
, но не связан с libffi
(, как я выяснил с помощьюldd
). Когда впоследствии make
запустит setup.py
, я получу точно такую же ошибку :
*** WARNING: renaming "_ctypes" since importing it failed:
build/lib.linux-x86_64-3.9/_ctypes.cpython-39-x86_64-linux-gnu.so:
undefined symbol: ffi_prep_cif
Following modules built successfully but were removed because they could not be imported:
_ctypes
Но в моем случае export
ing C_INCLUDE_PATH
не было проблемой. Проблема заключалась в том, что _ctypes.cpython-39-x86_64-linux-gnu.so
был скомпилирован без -lffi
. Мне пришлось взломать setup.py
, добавив строку
ext.libraries.append('ffi')
в конце определения функции
def detect_ctypes(self):
Для протокола: я запустил скрипт configure
с
CPPFLAGS="-I/my/path/include" LDFLAGS="-Wl,-rpath=/my/path/lib64 -Wl,-rpath=/my/path/lib"./configure --prefix=/my/path --build=x86_64-redhat-linux --enable-shared --enable-optimizations
Я не уверен, что явные CPPFLAGS
и LDFLAGS
необходимы во всех случаях.