Home Swift UNIX C Assembly Go Web MCU Research Non-Tech

Fix "Symbol Not Found" Error When Installing FaceFusion with Miniconda

2025-01-31 | Python | #Words: 447 | 中文原版

I’d been avoiding Miniconda for as long as possible, but I finally couldn’t escape it—using FaceFusion today required Miniconda. Right at the final step of installing FaceFusion, I encountered the following error:

Error message at the final step of FaceFusion installation with Miniconda

The root cause of this issue was that symbols could not be found in the library. This was not a problem with FaceFusion itself, but rather an issue with the Miniconda environment configuration.

Although minor version updates (even patch-level) for Python and its packages may seem insignificant, they often introduce substantial differences—for example, changes to function parameters. This means many projects require specific versions of Python or packages to run correctly. Without a dedicated tool, you’d have to manually install multiple Python versions and packages, then explicitly specify versions (e.g., Python3.9) every time you run a program—a cumbersome process. Miniconda addresses this pain point by offering “virtual environments” that automate the management of different Python and package versions for different projects.

However, Miniconda has a quirk: while it includes its own package management functionality, operating systems already have their native package managers (e.g., Homebrew for macOS, APT for Ubuntu). Miniconda sometimes fails to properly recognize or integrate with these system-level package managers, which is exactly what caused my error.

The solution is surprisingly simple: just install curl via Miniconda within the required virtual environment.

(facefusion) zhonguncle@zhonguncle-Precision-Tower-5810:~$ conda install curl
Channels:
 - defaults
Platform: linux-64
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /home/zhonguncle/miniconda3/envs/facefusion

  added / updated specs:
    - curl


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    curl-8.11.1                |       hdbd6064_0          90 KB
    libcurl-8.11.1             |       hc9e6f67_0         454 KB
    ------------------------------------------------------------
                                           Total:         544 KB

The following NEW packages will be INSTALLED:

  c-ares             pkgs/main/linux-64::c-ares-1.19.1-h5eee18b_0 
  curl               pkgs/main/linux-64::curl-8.11.1-hdbd6064_0 
  krb5               pkgs/main/linux-64::krb5-1.20.1-h143b758_1 
  libcurl            pkgs/main/linux-64::libcurl-8.11.1-hc9e6f67_0 
  libedit            pkgs/main/linux-64::libedit-3.1.20230828-h5eee18b_0 
  libev              pkgs/main/linux-64::libev-4.33-h7f8727e_1 
  libnghttp2         pkgs/main/linux-64::libnghttp2-1.57.0-h2d74bed_0 
  libssh2            pkgs/main/linux-64::libssh2-1.11.1-h251f7ec_0 
  lz4-c              pkgs/main/linux-64::lz4-c-1.9.4-h6a678d5_1 
  zstd               pkgs/main/linux-64::zstd-1.5.6-hc292b87_0 


Proceed ([y]/n)? y


Downloading and Extracting Packages:
                                                                                                                                    
Preparing transaction: done                                                                                                         
Verifying transaction: done
Executing transaction: done

I came across other solutions suggested in online blogs, but they’re not ideal:

I hope these will help someone in need~