Saya baru-baru ini menginstal sekelompok dotfile pada Mac saya bersama dengan beberapa aplikasi lain (saya berubah menjadi iTerm bukan Terminal, dan Sublime sebagai editor teks default saya) tetapi sejak itu, semua lingkungan virtual saya telah berhenti bekerja, meskipun folder mereka di dalam .virtualenvs masih ada dan mereka memberikan kesalahan berikut setiap kali saya mencoba menjalankan apa pun di dalamnya:
dyld: Library not loaded: @executable_path/../.Python
Referenced from: /Users/[user]/.virtualenvs/modclass/bin/python
Reason: image not found
Trace/BPT trap: 5
Saya telah menghapus semua file yang terkait dengan dotfiles dan telah memulihkan .bash_profile saya seperti sebelumnya, tetapi masalahnya tetap ada. Apakah ada cara untuk mendiagnosis masalah atau menyelesaikannya dengan cara yang mudah (mis. Tidak perlu membuat semua virtualenv lagi)?
rmvirtualenv
masih berfungsi tetapi ketika mencoba menjalankanmkvirtualenv
, saya mendapatkan kesalahan berikut:-bash: /usr/local/bin/virtualenv: /usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/Resour: bad interpreter: No such file or directory
Jadi, sepertinya ada masalah dengan jalur python saya tapi saya tidak bisa melihat di mana masalahnya, karena saya bisa menjalankan python dan sepertinya baik-baik saja.virtualenv
perintah sekarang bekerja dalam teori, tetapi karena ada masalah dengan python, mereka tidak melakukan apa-apa. Jadi masalah sebenarnya adalah dengan python brew. Dan saya curiga alasannya adalah karena perubahan nama pada direktori python. Untuk beberapa alasan, semua perintah ini mencari python di folder/usr/local/Cellar/python/2.7.6
tetapi nama folder sebenarnya/usr/local/Cellar/python/2.7.6_1
.2.7.6_1
menjadi2.7.6
. Jika lebih buruk menjadi terburuk, Anda bisa mengganti namanya kembali.Jawaban:
Saya menemukan solusi untuk masalah ini di sini , jadi semua kredit diberikan kepada penulis.
Intinya adalah ketika Anda membuat virtualenv, banyak symlink dibuat untuk Python Homebrew yang terinstal.
Ini salah satu contohnya:
Ketika Anda memutakhirkan Python menggunakan Homebrew dan kemudian jalankan
brew cleanup
, symlink di titik virtualenv ke jalur yang tidak ada lagi (karena Homebrew menghapusnya).Symlinks perlu mengarah ke Python yang baru diinstal:
Solusinya adalah menghapus symlink di virtualenv dan kemudian membuatnya kembali:
Mungkin yang terbaik untuk memeriksa tautan apa yang akan dihapus terlebih dahulu sebelum menghapusnya:
Menurut pendapat saya, lebih baik menghapus symlink yang rusak saja. Anda dapat melakukan ini menggunakan GNU
find
:Anda dapat menginstal GNU
find
dengan Homebrew jika Anda belum memilikinya:Perhatikan bahwa secara default, program GNU yang diinstal dengan Homebrew cenderung diawali dengan huruf
g
. Ini untuk menghindari membayangifind
biner yang dikirimkan dengan OS X.sumber
gfind
sempurna, karena saya memiliki banyak symlink yang tidak terputus (mis., Nodeenv) yang tidak ingin saya hapusfind -L ~/.virtualenvs/my-virtual-env/ -type l | xargs rm
pip3 freeze dyld: lazy symbol binding failed: Symbol not found: __Py_UnixMain
virtualenv ~/.virtualenvs/foo -p python2
Setelah mencoba beberapa hal, ini berhasil bagi saya:
buka direktori virtualenv Anda (tetapi jangan jalankan workon):
Sekarang hapus file-file ini:
Kemudian untuk membangun kembali venv Anda, jalankan:
Anda sekarang akan melihat daftar paket yang diinstal lagi.
sumber
pipenv --rm
dan membuat ulangpipenv shell
,,pipenv install
Ini terjadi ketika saya memperbarui ke Mac OS X Mavericks dari Snow Leopard. Saya juga harus menginstal ulang brew sebelumnya. Semoga Anda menjalankan perintah pembekuan untuk proyek Anda dengan pip.
Untuk menyelesaikannya, Anda harus memperbarui jalur yang ditunjuk oleh lingkungan virtual.
brew install python
pip install --upgrade virtualenvwrapper
rmvirtualenv old_project
mkvirtualenv new_project
workon new_project
pip install -r requirements.txt
Ini harus meninggalkan proyek seperti sebelumnya.
sumber
Jawaban versi pembaruan
@Chris Wedgwood
untuk menjagasite-packages
(menjaga paket diinstal)sumber
Tampaknya cara yang tepat untuk menyelesaikan masalah ini adalah dengan menjalankannya
setelah Anda memutakhirkan python dengan Homebrew.
Ini harus menjadi prosedur umum untuk setiap rumus yang menginstal sesuatu seperti python, yang memiliki sistem manajemen paket itu sendiri. Ketika Anda menginstal
brew install python
, Anda menginstalpython
danpip
daneasy_install
danvirtualenv
dan sebagainya. Jadi, jika alat-alat itu dapat diperbarui sendiri, yang terbaik adalah mencoba melakukannya sebelum melihat ke Homebrew sebagai sumber masalah.sumber
virtualenv .
di lingkungan virtual saya yang rusak. Versi yang diperbaruivirtualenv
kemudian menciptakan kembali dependensi yang diperlukan dan saya bisa melanjutkan. Proses ini lebih dikelola sendiri dan kuat daripada jawaban yang diterima untuk saya.Jika ini disebabkan oleh
brew upgrade
upgrade Python-nya, dan Anda setuju dengan penurunan versi ke versi sebelumnya, cobabrew switch python [previous version]
, misalnyabrew switch python 3.6.5
. Dari sini.sumber
instruksi virtualenvwrapper
Seperti ditunjukkan dalam jawaban yang diterima, penyebab root kemungkinan adalah pembaruan homebrew yang berarti symlink virtualenv Anda menunjuk pada jalur python yang rusak - lihat detailnya di sini .
Untuk setiap env virtual, Anda perlu menetapkan kembali symlink untuk menunjuk pada jalur python yang benar (di gudang minuman). Inilah cara melakukannya dengan virtualenvwrapper . Di sini saya memperbarui env virtual yang disebut "my-example-env".
Semua selesai.
sumber
Siapa pun yang menggunakan pipenv (dan Anda harus!) Cukup menggunakan dua perintah ini - tanpa mengaktifkan venv:
sumber
pipenv --rm
dalam folder env Anda dan kemudianpipenv install --dev
Jika Anda telah merusak python3 coba saja
brew upgrade python3
memperbaikinya untuk saya.sumber
Saya baru-baru ini menghadapi ini. Tidak ada solusi di atas yang berfungsi untuk saya. Tampaknya itu sebenarnya bukan masalah Python. Ketika saya sedang menjalankan
aws s3 ls
saya mendapatkan kesalahan berikut:
dyld: Library not loaded: @executable_path/../.Python
Ini berarti,
aws
executable perpustakaan menunjuk ke arah itu tidak ada atau rusak, jadi saya uninstall dan instal kembaliaws-cli
mengikuti instruksi dari tautan ini dan berhasil !!sumber
Masalahnya bagi saya (pengguna MacOS) adalah
brew
memperbarui tautan Python dan virtualenvs ke versi lama yang telah dihapus.Kami dapat memeriksa dan memperbaikinya dengan
sumber
Saya memiliki masalah serupa dan saya menyelesaikannya dengan hanya membangun kembali lingkungan virtual
virtualenv .
sumber
Menggunakan Python 2.7.10.
Satu perintah
virtualenv path-to-env
melakukannya. dokumentasisumber
Saya memiliki env virtual yang rusak karena instal ulang Homebrew dari python (dengan demikian merusak symlink) dan juga beberapa "sudo pip install" yang telah saya lakukan sebelumnya. Kiat Weizhong sangat membantu dalam memperbaiki masalah tanpa harus menginstal ulang paket. Saya juga harus melakukan hal berikut untuk masalah izin campuran.
sudo chown -R my_username lib / python2.7 / paket-situs
sumber
Virtualenvs rusak. Terkadang cara sederhana adalah menghapus folder venv dan membuat ulang virutalenvs.
sumber
Jika Anda menggunakan pipenv, lakukan saja
pipenv --rm
menyelesaikan masalah.sumber
Saya menghadapi masalah yang sama setelah memperbarui minuman pada OSX Catalina saya.
Setelah mencoba banyak barang, saya menemukan yang berikut ini adalah solusi terbaik dan mudah.
Pada awalnya, hapus virtual env. (Pilihan)
lalu buat ulang virtualenv baru
Referensi: https://www.jeremycade.com/python/osx/homebrew/2015/03/02/fixing-virtualenv-after-a-python-upgrade/
sumber
Jawaban yang diterima tidak berfungsi untuk saya: file
$WORKON_HOME/*/bin/python2.7
tidak lagi symlink, ini adalah executable penuh:Solusinya adalah, sayangnya, untuk sepenuhnya menghapus dan menciptakan kembali dari awal semua lingkungan virtual.
Untuk referensi:
sumber
--always-copy
argumen untuk menimpanya. Setidaknya itulah yang saya dapatkan dari Panduan Pengguna--always-copy
dan saya memiliki file biasa :-(Cukup memutakhirkan python3 bekerja untuk saya:
sumber
Saya mencoba beberapa metode teratas, tetapi tidak berhasil, bagi saya, yang berusaha membuat racun bekerja. Yang akhirnya berhasil adalah:
bahkan jika racun sudah dipasang. Output diakhiri dengan:
sumber
Apa yang diperbaiki untuk saya adalah hanya menghapus python3 dan pipenv kemudian menginstalnya kembali.
sumber
Semua jawabannya hebat di sini, saya mencoba beberapa solusi yang disebutkan di atas oleh Ryan, Chris dan tidak bisa menyelesaikan masalah, jadi harus mengikuti cara yang cepat dan kotor.
rm -rf <project dir>
(ataumv <project dir> <backup projct dir>
jika Anda ingin menyimpan cadangan)git clone <project git url>
Tidak ada yang baru di sini, tapi itu membuat hidup lebih mudah!
sumber
Saya yakin saya terlambat ke pesta tetapi saya ingin mengatakan bahwa penyelesaian masalah ini jauh lebih sederhana daripada yang dibahas di sini.
Anda dapat dengan mudah membuat ulang lingkungan virtual tanpa harus menghapus / mengedit apa pun. Dengan asumsi bahwa lingkungan Anda yang rusak disebut,
env_to_fix
Anda dapat melakukan yang berikut:Ini akan membuat ulang tautan dan memperbaiki lingkungan tanpa perlu membuang status saat ini di suatu tempat dan memulihkannya.
sumber
Saya menemukan masalah yang sama ketika saya menunjuk waktu menjalankan python saya dari 2 hingga 3 pada mac saya, menunjuk alias python ke jalur python 3. Saya kemudian membuat ulang virtualenv baru dan menginstal ulang paket-paket yang saya butuhkan untuk proyek saya. Untuk kasus penggunaan saya, saya punya program python menulis ke google sheet. Bersihkan beberapa paket yang berbeda dari implementasi python 2 dan wa la, semuanya mulai bekerja lagi.
sumber