bash: mkvirtualenv: perintah tidak ditemukan

100

Setelah mengikuti petunjuk di pos Doug Hellmanvirtualenvwrapper , saya masih tidak dapat menjalankan lingkungan pengujian.

[mpenning@tsunami ~]$ mkvirtualenv test
-bash: mkvirtualenv: command not found
[mpenning@tsunami ~]$

Perlu dicatat bahwa saya menggunakan WORKON_HOMEyang tidak ada di saya $HOME. Saya mencoba mencari /usr/local/bin/virtualenvwrapper.shseperti yang ditunjukkan di virtualenvwrapperdokumen instalasi , tetapi tidak ada.

Saya menjalankan CentOS 6 dan python 2.6.6, jika ini penting.


# File: ~/.bash_profile
# ...

export WORKON_HOME="/opt/virtual_env/"
source "/opt/virtual_env/bin/virtualenvwrapper_bashrc"
Mike Pennington
sumber

Jawaban:

107

Solusi 1 :

Untuk beberapa alasan, virtualenvwrapper.shdipasang di /usr/bin/virtualenvwrapper.sh, bukan di bawah /usr/local/bin.

Berikut ini dalam .bash_profilekarya saya ...

source "/usr/bin/virtualenvwrapper.sh"
export WORKON_HOME="/opt/virtual_env/"

Penginstalan saya tampaknya berfungsi dengan baik tanpa sumber virtualenvwrapper_bashrc

Solusi 2 :

Atau seperti yang disebutkan di bawah ini, Anda dapat memanfaatkan peluang yang virtualenvwrapper.shsudah ada di shell Anda PATHdan hanya menerbitkan filesource `which virtualenvwrapper.sh`

Mike Pennington
sumber
5
Mengatur WORKON_HOMEke "~ / .virtualenvs" ( nilai default ) memungkinkan untuk mengatur virtualenvs pribadi
Pierre de LESPINAY
1
Jika Anda menginstal menggunakan manajer paket distro Anda, file akan di /usr/binbukannya /usr/local/bin. Umumnya, Anda tidak boleh menganggap salah satu atau yang lain ditemukan; itulah salah satu alasan kami memiliki PATHvariabel.
tripleee
Jawaban ini didasarkan pada pemasangan virtualenvwrapper dengan pip, yang saya lebih suka lakukan.
Mike Pennington
Ini perlu dipasang dulu,pip install virtualenvwrapper
Eddie
WORKON_HOMEbersifat opsional dan tidak ada hubungannya dengan solusinya.
scone
55

Mencoba:

source `which virtualenvwrapper.sh`

Backticks adalah substitusi perintah - mereka mengambil apa pun yang dicetak oleh program dan meletakkannya dalam ekspresi. Dalam hal ini "yang" memeriksa $ PATH untuk menemukan virtualenvwrapper.sh dan menampilkan path ke sana. Script tersebut kemudian dibaca oleh shell melalui 'source'.

Jika Anda ingin ini terjadi setiap kali Anda me-restart shell Anda, mungkin lebih baik untuk mengambil output dari perintah "which" terlebih dahulu, dan kemudian meletakkan baris "source" di shell Anda, seperti ini:

echo "source /path/to/virtualenvwrapper.sh" >> ~/.profile

^ Ini mungkin sedikit berbeda berdasarkan cangkang Anda. Juga, berhati-hatilah untuk tidak menggunakan satu> karena ini akan memotong ~ / .profile Anda: -o

Erich
sumber
4
Meskipun ini mungkin petunjuk berharga untuk menyelesaikan masalah, jawaban sebenarnya membutuhkan sedikit lebih banyak detail daripada ini. Harap edit untuk menjelaskan bagaimana ini akan menyelesaikan masalah. Sebagai alternatif, pertimbangkan untuk menulis ini sebagai komentar.
Toby Speight
1
Ini memecahkan masalah saya. Tetapi apakah seseorang akan menjelaskan mengapa dan bagaimana?
h0r53
1
Backticks adalah substitusi perintah - mereka mengambil apa pun yang dicetak oleh program dan meletakkannya dalam ekspresi. Dalam hal ini "yang" memeriksa $ PATH untuk menemukan virtualenvwrapper.sh dan menampilkan path ke sana. Script tersebut kemudian dibaca oleh shell melalui 'source'.
Erich
43

Saya memiliki masalah yang sama di OS X 10.9.1 dengan python 2.7.5. Tidak ada masalah dengan WORKON_HOMEsaya, tapi aku harus secara manual menambahkan source "/usr/local/bin/virtualenvwrapper.sh"untuk ~/.bash_profile(atau ~/.bashrcdalam unix) setelah saya berlaripip install virtualenvwrapper

Nick Benes
sumber
1
Di mana Anda menambahkan sumber "/usr/local/bin/virtualenvwrapper.sh" secara manual?
Gregologi
1
@Gregology Saya menambahkan baris itu ke ~/.bash_profile. Perhatikan bahwa ketika Anda pertama kali menambahkannya, Anda harus memuat ulang terminal (yang berjalan .bash_profile) atau hanya menjalankan sourceperintah itu langsung dari baris perintah.
Nick Benes
1
Akan sangat membantu jika Anda memiliki judul dengan nama file dan menampilkan semua konten sehingga Anda tidak perlu mendapatkan pertanyaan lanjutan tentang "di mana Anda meletakkannya?"
JGallardo
1
Apakah Anda menggunakan .bash_profileatau .bashrctidak secara langsung merupakan konsekuensi dari platform mana yang Anda gunakan, meskipun satu atau yang lain mungkin hilang pada beberapa platform. Lihat halaman manual Bash untuk mengetahui perbedaannya. Secara umum, Anda seharusnya hanya benar-benar membutuhkan ini di Anda .bash_profile, tetapi beberapa distro menggunakan pengaturan yang memperumit masalah.
tripleee
25

Prasyarat untuk menjalankan perintah ini -

  1. pip (akronim rekursif dari P ip I nstalls P ackages) adalah sistem manajemen paket yang digunakan untuk menginstal dan mengelola paket perangkat lunak yang ditulis dengan Python. Banyak paket dapat ditemukan di Python Package Index (PyPI).

    sudo apt-get install python-pip

  2. Pasang Lingkungan Virtual. Digunakan untuk membuat lingkungan virtual, untuk menginstal paket dan dependensi dari beberapa proyek yang diisolasi satu sama lain.

    sudo pip menginstal virtualenv

  3. Instal pembungkus lingkungan virtual Tentang pembungkus env virtual

    sudo pip menginstal virtualenvwrapper

Setelah Menginstal prasyarat, Anda perlu menjalankan pembungkus lingkungan virtual untuk membuat lingkungan virtual. Berikut langkah-langkahnya -

  1. mengatur direktori lingkungan virtual di variabel jalur- export WORKON_HOME=(directory you need to save envs)

  2. source /usr/local/bin/virtualenvwrapper.sh -p $WORKON_HOME

Seperti yang disebutkan oleh @Mike, sumber `yang virtualenvwrapper.sh` atau which virtualenvwrapper.shdapat digunakan untuk mencari file virtualenvwrapper.sh.

Sebaiknya letakkan di atas dua baris dalam ~ / .bashrc untuk menghindari menjalankan perintah di atas setiap kali Anda membuka shell baru. Hanya itu yang Anda butuhkan untuk membuat lingkungan menggunakan mkvirtualenv

Poin yang perlu diingat -

  • Di Ubuntu, Anda mungkin perlu menginstal virtualenv dan virtualenvwrapper sebagai root. Cukup awali perintah di atas dengan sudo.
  • Bergantung pada proses yang digunakan untuk menginstal virtualenv, jalur ke virtualenvwrapper.sh mungkin berbeda-beda. Temukan jalur yang sesuai dengan menjalankan $ find / usr -name virtualenvwrapper.sh. Sesuaikan baris dalam skrip .bash_profile atau .bashrc Anda.
Keshav
sumber
1
Menambahkan catatan. Di ubuntu 18.04, saya harus reboot setelah menginstal dan kemudian berhasil.
Dan Grahn
@screenmutt Terima kasih atas masukan yang berharga. Saya mungkin melewatkannya karena saya menggunakan ubuntu 16.04. Namun, saya ingin tahu setelah langkah mana Anda harus melakukan boot ulang? Apakah setelah menginstal paket pip atau setelah mengatur "direktori lingkungan virtual"?
Keshav
Setelah menginstal pembungkusnya. Ini berhasil setelah itu.
Dan Grahn
1
@DanGrahn Anda tidak perlu reboot, hanya perlu menjalankan kembali .bashrc- baik secara eksplisit source ~/.bashrcdi terminal Anda saat ini, atau membuka jendela terminal baru
TJ Ellis
10

Gunakan prosedur ini untuk membuat virtual env di ubuntu

Langkah 1

Pasang pip

   sudo apt-get install python-pip

Langkah 2

Instal virtualenv

   sudo pip install virtualenv

langkah 3

Buat direktori untuk menyimpan virtualenvs Anda (saya menggunakan ~ / .virtualenvs)

   mkdir ~/.virtualenvs

atau gunakan perintah ini untuk menginstal versi python tertentu di env

virtualenv -p /usr/bin/python3.6 venv

langkah 4

   sudo pip install virtualenvwrapper

langkah 5

   sudo nano ~/.bashrc

langkah 6

Tambahkan kode dua baris ini di akhir file bashrc

  export WORKON_HOME=~/.virtualenvs
  source /usr/local/bin/virtualenvwrapper.sh

langkah 7

Buka terminal baru (disarankan)

langkah 8

Buat virtualenv baru

  mkvirtualenv myawesomeproject

langkah 9

Untuk memuat atau beralih di antara virtualenvs, gunakan perintah workon:

  workon myawesomeproject

langkah 10

Untuk keluar dari virtualenv baru Anda, gunakan

 deactivate

dan pastikan menggunakan pip vs pip3

ATAU ikuti langkah-langkah di bawah ini untuk menginstal lingkungan virtual menggunakan python3

Instal env

python3 -m venv my-project-env

dan aktifkan lingkungan virtual Anda menggunakan perintah berikut:

source my-project-env/bin/activate
giveJob
sumber
6

Karena saya baru saja mengalami hambatan, saya akan mencoba menulis jawaban yang saya harapkan selama dua jam yang lalu. Ini untuk orang-orang yang tidak hanya menginginkan solusi salin & tempel

Pertama: Apakah Anda bertanya-tanya mengapa menyalin dan menempel jalur berfungsi untuk beberapa orang sementara itu tidak berfungsi untuk orang lain? ** Alasan utama, solusi berbeda adalah versi python yang berbeda, 2.x atau 3.x. Sebenarnya ada versi berbeda dari virtualenv dan virtualenvwrapper yang bekerja dengan python 2 atau 3. Jika Anda menggunakan python 2, instal seperti ini:

sudo pip install virutalenv
sudo pip install virtualenvwrapper

Jika Anda berencana menggunakan python 3, instal versi python 3 terkait

sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper

Anda telah berhasil menginstal paket untuk versi python Anda dan sudah siap, bukan? Baiklah, cobalah. Ketik workonterminal Anda. Terminal Anda tidak akan dapat menemukan perintah ( workonadalah perintah virtualenvwrapper). Tentu saja tidak. Workonadalah executable yang hanya akan tersedia untuk Anda setelah Anda memuat / mencari file virtualenvwrapper.sh. Tetapi panduan instalasi resmi sudahkah Anda bahas untuk yang satu ini, bukan ?. Buka saja .bash_profile Anda dan masukkan yang berikut ini, yang tertulis dalam dokumentasi:

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh

Terutama perintah source /usr/local/bin/virtualenvwrapper.shtampaknya membantu karena perintah tampaknya memuat / sumber file virtualenvwrapper.shyang diinginkan yang berisi semua perintah yang ingin Anda kerjakan seperti workondan mkvirtualenv. Tapi ya, tidak. Ketika mengikuti panduan instalasi resmi, Anda sangat mungkin untuk menerima kesalahan dari posting awal: mkvirtualenv: command not found. Masih tidak ada perintah yang ditemukan dan Anda masih frustrasi. Jadi apa masalahnya disini? Masalahnya adalah bahwa virtualenvwrapper.sh bukan yang Anda cari sekarang. Pengingat singkat ... Anda sedang mencari di sini:

source /usr/local/bin/virtualenvwrapper.sh

Tetapi ada cara yang cukup mudah untuk menemukan file yang diinginkan. Ketik saja

which virtualenvwrapper

ke terminal Anda. Ini akan mencari PATH Anda untuk file tersebut, karena kemungkinan besar berada di beberapa folder yang termasuk dalam PATH sistem Anda.

Jika sistem Anda sangat eksotis, file yang diinginkan akan disembunyikan di luar folder PATH. Dalam hal ini, Anda dapat menemukan jalur ke virtalenvwrapper.shdengan perintah shellfind / -name virtualenvwrapper.sh

Hasil Anda mungkin terlihat seperti ini: /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh Selamat. You have found your missing file!. Sekarang yang harus Anda lakukan adalah mengubah satu perintah di .bash_profile Anda. Ubah saja:

source "/usr/local/bin/virtualenvwrapper.sh"

untuk:

"/Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh"

Selamat. Virtualenvwrapper sekarang berfungsi di sistem Anda. Tetapi Anda dapat melakukan satu hal lagi untuk meningkatkan solusi Anda. Jika Anda telah menemukan file virtualenvwrapper.shdengan perintah, which virtualenvwrapper.shAnda tahu bahwa itu ada di dalam folder PATH. Jadi jika Anda hanya menulis nama file, sistem file Anda akan menganggap file tersebut berada di dalam folder PATH. Jadi, Anda tidak perlu menuliskan jalur lengkapnya. Ketik saja:

source "virtualenvwrapper.sh"

Itu dia. Anda tidak lagi frustrasi. Anda telah memecahkan masalah Anda. Semoga.

Xen_mar
sumber
Saya sebenarnya baru saja menyalin dan mengubah solusi Anda
johnny 5
2

Untuk berhasil menginstal virtualenvwrapperdi Ubuntu 18.04.3 Anda perlu melakukan hal berikut:

  1. Install virtualenv

    sudo apt install virtualenv
  2. Install virtualenvwrapper

    sudo pip install virtualenv
    sudo pip install virtualenvwrapper
  3. Tambahkan yang berikut ini ke akhir .bashrcfile

    export WORKON_HOME=~/virtualenvs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
    source ~/.local/bin/virtualenvwrapper.sh
  4. Jalankan .bashrcfile tersebut

    source ~/.bashrc
  5. Buat virtualenv Anda

    mkvirtualenv your_virtualenv
tsveti_iko
sumber
bekerja di ubuntu 20.04 juga. koreksi kecil tho: WORKON_HOME=~/.virtualenvsadalah defaultnya. tidak perlu mengatur itu. VIRTUALENVWRAPPER_PYTHON=/usr/bin/pythonjuga defaultnya, tetapi saat menggunakan python3 ini berguna. juga harus digunakan export PATH="$HOME/.local/bin:$PATH"untuk jalur biner python
scone
1

Di Windows 7 dan Git Bash, ini membantu saya:

  1. Buat file ~ / .bashrc (di bawah folder home pengguna Anda)
  2. Tambahkan ekspor baris WORKON_HOME = $ HOME / .virtualenvs (Anda harus membuat folder ini jika tidak ada)
  3. Tambahkan sumber baris "C: \ Program Files (x86) \ Python36-32 \ Scripts \ virtualenvwrapper.sh" (ubah jalur untuk virtualenvwrapper.sh Anda)

Mulai ulang perintah git bash dan mkvirtualenv Anda sekarang akan bekerja dengan baik.

Eugene Zalivadnyi
sumber
1

Menggunakan Git Bash pada Windows 10 dan Python36 untuk Windows saya menemukan virtualenvwrapper.sh di tempat yang sedikit berbeda dan menjalankan ini menyelesaikan masalah

source virtualenvwrapper.sh 
/c/users/[myUserName]/AppData/Local/Programs/Python36/Scripts
leastgrebe
sumber
0

Memecahkan masalah saya di Ubuntu 14.04 OS dengan python 2.7.6, dengan menambahkan dua baris di bawah ini ke file ~ / .bash_profile (atau ~ / .bashrc in unix).

sumber "/usr/local/bin/virtualenvwrapper.sh"

ekspor WORKON_HOME = "/ opt / virtual_env /"

Dan kemudian mengeksekusi kedua baris ini ke terminal.

Mahan
sumber
0

Pada Windows 10, untuk membuat lingkungan virtual, saya mengganti " pip mkvirtualenv myproject" dengan " mkvirtualenv myproject" dan itu berfungsi dengan baik.

Ayoub_DATA
sumber