Якщо ви щось робите, тут ніхто вас не слухатиме, тому що "ви робите це неправильно", але ви повинні робити це "неправильно" з причини, що викликає асинін (наприклад, у моєму випадку це швидко руйнується на недобре слова про когось у матір'ю команди з надмірною вагою матері), потрібно спочатку:
Отримайте libffi та встановіть його у зону встановлення вашого користувача звичайним способом.
git clone https://github.com/libffi/libffi.git
cd libffi
./configure --prefix=path/to/your/install/root
make
make install
Потім поверніться до свого джерела Python 3 і знайдіть цю частину коду в setup.py на верхньому рівні джерела каталогу python
ffi_inc = [sysconfig.get_config_var("LIBFFI_INCLUDEDIR")]
if not ffi_inc or ffi_inc[0] == '':
ffi_inc = find_file('ffi.h', [], inc_dirs)
if ffi_inc is not None:
ffi_h = ffi_inc[0] + '/ffi.h'
if not os.path.exists(ffi_h):
ffi_inc = None
print('Header file {} does not exist'.format(ffi_h))
ffi_lib = None
if ffi_inc is not None:
for lib_name in ('ffi', 'ffi_pic'):
if (self.compiler.find_library_file(lib_dirs, lib_name)):
ffi_lib = lib_name
break
ffi_lib="ffi" # --- AND INSERT THIS LINE HERE THAT DOES NOT APPEAR ---
if ffi_inc and ffi_lib:
ext.include_dirs.extend(ffi_inc)
ext.libraries.append(ffi_lib)
self.use_system_libffi = True
і додайте рядок, який я позначив вище, за допомогою коментаря. Чому це потрібно і чому немає можливості налаштувати конфігурацію на повагу '--with-system-ffi` на платформах Linux, можливо, я дізнаюся, чому це "непідтримується" протягом наступних двох годин, але все має працював з тих пір. Інакше, удачі ... YMMV.
Що це робить: просто переосмислює логіку і призводить до того, що команда компілятора, що зв'язує, додає "-lffi", що є все, що йому дійсно потрібно. Якщо у вас встановлена користувачка бібліотеки, вона, ймовірно, визначає колонтитули добре, доки ви не PKG_CONFIG_PATH
включені path/to/your/install/root/lib/pkgconfig
.