Jak rozwiązać błąd „dyld: Biblioteka nie została załadowana: @executable_path ..”


88

Próbowałem sprawdzić wersję AWS-CLI na moim MAC OS X. I pojawił się poniższy błąd:

dyld: Library not loaded: @executable_path/../.Python
  Referenced from: /usr/local/aws/bin/python
  Reason: image not found
Abort trap: 6

Wszelkie istotne wskazówki, jak to naprawić, będą bardzo mile widziane.


11
Ten błąd może wystąpić, brew install some_packagegdy jesteś w virtualenv. Myślę, że to, co się dzieje, to brew działa wewnątrz maszyny wirtualnej. Aby to naprawić, dezaktywuj z virtualenv, rm -rffolderu środowiska wirtualnego. Następnie odbuduj go od podstaw. Następnie umieść głośny komentarz, który mówi, że nie warz instaluj rzeczy w wirtualnym środowisku.
Eric Leschinski

Jeśli nie chcesz go odbudowywać od zera, kliknij ten link. U mnie zadziałało
PAC

Odpowiedzi:


78

Jest to błąd w awscli i może zostać naprawiony w następnych wersjach. Dlatego najlepszą praktyką jest aktualizacja:

brew upgrade awscli

12
jeśli masz uszkodzony link symboliczny, to nie zadziała. powie ci, że awscli nie jest zainstalowane i że w końcu będziesz musiał uruchomić brew link --overwrite awsclii to właśnie zadziałało w moim przypadku. Głosowałem za, ponieważ był to początek właściwej ścieżki.
str8up7od

Jeśli zastosujesz się do instrukcji na stronie interfejsu wiersza polecenia AWS, to nie zadziała docs.aws.amazon.com/cli/latest/userguide/install-macos.html
jcollum

1
Podobna uwaga dla tych, którzy mają podobny problem z eb, możesz uruchomić brew upgrade aws-elasticbeanstalk.
Sean Chon,

Nie mam na przykład
aswcli

33

Musiałeś schrzanić napar. Spróbuj zainstalować go ponownie, używając: brew install awscli(w brew link awsclirazie potrzeby zakończonego).


Tak się nie stało, również z powodu tego błędu:Error: awscli 1.14.60 is already installed
axel

16

Ten błąd występuje, ponieważ Twoje środowisko wirtualne ma uszkodzone łącza symboliczne. Oto rozwiązanie ładny zaczerpnięte z tevino za fix_virtualenvGIST :

#!/usr/bin/env bash

ENV_PATH="$(dirname "$(dirname "$(which pip)")")"
SYSTEM_VIRTUALENV="$(which -a virtualenv|tail -1)"

BAD_ENV_PATHS="/usr/local"

echo "Ensure the root of the broken virtualenv:"
echo "    $ENV_PATH"

if [[ -z "$ENV_PATH" ]] || [[ "$ENV_PATH" = *"$BAD_ENV_PATHS"* ]]; then
    echo "The root path above doesn't seems to be a valid one."
    echo "Please make sure you ACTIVATED the broken virtualenv."
    echo "‼️  Exiting for your safety... (thanks @laymonk for reporting this)"
    exit 1
fi

read -p "‼️  Press Enter if you are not sure (y/N) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    echo "♻️  Removing old symbolic links......"
    find "$ENV_PATH" -type l -delete -print
    echo "💫  Creating new symbolic links......"
    $SYSTEM_VIRTUALENV "$ENV_PATH"
    echo "🎉  Done!"
fi

Tutaj jest też podobne pytanie: zepsute odniesienia w Virtualenvs .


Niesamowite, to natychmiast rozwiązało mój problem
Our_Benefactors

Jak to się robi?
Yokhen

3
Podsumowanie rozwiązania: 1) Usuń wszystkie dowiązania symboliczne w środowisku wirtualnym, uruchamiając find your-virtual-env-directory -type l -delete2) Odtwórz dowiązania symboliczne w środowisku wirtualnym, uruchamiającvirtualenv your-virtual-env-directory
alejandro

Po OSError: Command /Users/defaultuser/D...o/venv/bin/python3.7 - setuptools pip wheel failed with error code -6uruchomieniu polecenia pojawia się błąd $SYSTEM_VIRTUALENV "$ENV_PATH". Nie mam pojęcia, co to jest kod błędu „-6”
jerrymouse

Nie używaj tego! To usunęło wszystkie moje ważne linki symboliczne w katalogu domowym. i nie stworzył żadnych nowych. Zamiast tego w wierszu błędu 24:.: Wymagany jest argument nazwa_pliku
Atombit

12

Po przeczytaniu tematu to u mnie działa:

  1. Odinstaluj aws
$ sudo rm -rf /usr/local/aws
$ sudo rm /usr/local/bin/aws
  1. Zainstaluj ponownie
    $ brew reinstall awscli

4
Ten sam problem, jedyne co zrobiłem to brew reinstall awsclii został naprawiony. Dzięki
Jordon Biondo

2

Miałem podobny problem podczas instalacji awscli z homebrew na Macu. Ostatnim podejściem było „zaparz, odinstaluj python3” i ponownie zainstaluj awscli.


2

Jeśli masz już Pythona ( python --version działa. Jeśli nie, zainstaluj go za pomocą brew install python ). Mi to pasuje:

  1. Odinstaluj aws

    $ sudo rm -rf /usr/local/aws
    $ sudo rm /usr/local/bin/aws
    
  2. Zainstaluj go ponownie

    $ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
    $ unzip awscli-bundle.zip
    $ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
    

2

Zainstalowałem go przez curl, w zwykły sposób

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"

Potem przestał działać narzekając, że nie znalazł python2.7

dyld: Library not loaded: @executable_path/../.Python
  Referenced from: /usr/local/aws/bin/python2.7
  Reason: image not found
Abort trap: 6

więc naprawiłem to, wykonując następujące kroki (upewnij się, że nie robisz tego, jeśli zainstalowałeś go przez brew):

$ sudo rm -rf /usr/local/aws
$ sudo rm /usr/local/bin/aws

Następnie zainstalowałem go za pomocą naparu:

$ brew upgrade
$ brew install awscli

2

Możliwe jest wywołanie tego błędu przez problem w twoim virtualenv. Na przykład miałem działającego virtualenv i uruchomiłem brew install awscligo, który zepsuł mój virtualenv tym błędem. W takim przypadku usunięcie i ponowne utworzenie virtualenv (w taki sam sposób, w jaki został pierwotnie utworzony) powinno rozwiązać problem. Zrobiło to dla mnie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.