bash: mkvirtualenv: ไม่พบคำสั่ง


100

หลังจากทำตามคำแนะนำในโพสต์ของ Doug Hellmanvirtualenvwrapperฉันก็ยังไม่สามารถเริ่มสภาพแวดล้อมการทดสอบได้

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

ควรสังเกตว่าฉันกำลังใช้WORKON_HOMEที่ไม่ได้อยู่ใน$HOMEไฟล์. ฉันพยายามค้นหา/usr/local/bin/virtualenvwrapper.shตามที่แสดงในvirtualenvwrapperเอกสารการติดตั้งแต่ไม่มีอยู่

ฉันใช้ CentOS 6 และ python 2.6.6 ถ้าเป็นเช่นนี้


# File: ~/.bash_profile
# ...

export WORKON_HOME="/opt/virtual_env/"
source "/opt/virtual_env/bin/virtualenvwrapper_bashrc"

คำตอบ:


107

โซลูชันที่ 1 :

ด้วยเหตุผลบางประการvirtualenvwrapper.shติดตั้ง/usr/bin/virtualenvwrapper.shแทนภายใต้/usr/local/bin.

ต่อไปนี้ใน.bash_profileผลงานของฉัน...

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

การติดตั้งของฉันดูเหมือนจะทำงานได้ดีโดยไม่ต้องจัดหา virtualenvwrapper_bashrc

โซลูชันที่ 2 :

อีกวิธีหนึ่งดังที่กล่าวไว้ด้านล่างคุณสามารถใช้ประโยชน์จากโอกาสที่virtualenvwrapper.shมีอยู่แล้วในเชลล์ของคุณPATHและเพียงแค่ออกกsource `which virtualenvwrapper.sh`


5
การตั้งค่าWORKON_HOMEเป็น "~ / .virtualenvs" ( ค่าเริ่มต้น ) อนุญาตให้ตั้งค่า
คุณธรรม

1
หากคุณติดตั้งโดยใช้แพคเกจผู้จัดการ distro ของไฟล์จะอยู่ในแทน/usr/bin /usr/local/binโดยทั่วไปคุณไม่ควรสันนิษฐานว่าจะพบอย่างใดอย่างหนึ่ง นั่นเป็นสาเหตุหนึ่งที่ทำให้เรามีPATHตัวแปร
tripleee

คำตอบนี้มาจากการติดตั้ง Virtualenvwrapper ด้วย pip ซึ่งเป็นสิ่งที่ฉันชอบทำ
Mike Pennington

จำเป็นต้องติดตั้งก่อนpip install virtualenvwrapper
Eddie

WORKON_HOME เป็นทางเลือกและไม่มีส่วนเกี่ยวข้องกับโซลูชัน
scones

55

ลอง:

source `which virtualenvwrapper.sh`

backticks คือการแทนที่คำสั่ง - ใช้ทุกอย่างที่โปรแกรมพิมพ์ออกมาและใส่ไว้ในนิพจน์ ในกรณีนี้ "ซึ่ง" จะตรวจสอบ $ PATH เพื่อค้นหา Virtualenvwrapper.sh และส่งออกพา ธ ไป จากนั้นเชลล์จะอ่านสคริปต์ผ่านทาง 'source'

หากคุณต้องการให้สิ่งนี้เกิดขึ้นทุกครั้งที่คุณรีสตาร์ทเชลล์ของคุณอาจเป็นการดีกว่าที่จะดึงเอาท์พุทจากคำสั่ง "ซึ่ง" ก่อนจากนั้นจึงใส่บรรทัด "source" ลงในเชลล์ของคุณดังนี้:

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

^ สิ่งนี้อาจแตกต่างกันเล็กน้อยขึ้นอยู่กับเปลือกของคุณ นอกจากนี้ระวังอย่าใช้ single> เพราะจะตัด ~ / .profile ของคุณ: -o


4
แม้ว่านี่อาจเป็นคำใบ้ที่มีค่าในการแก้ปัญหา แต่คำตอบนั้นต้องการรายละเอียดมากกว่านี้เล็กน้อย โปรดแก้ไขเพื่ออธิบายว่าวิธีนี้จะแก้ปัญหาได้อย่างไร หรือลองเขียนสิ่งนี้เป็นความคิดเห็นแทน
Toby Speight

1
สิ่งนี้ช่วยแก้ปัญหาของฉันได้ แต่จะมีคนอธิบายว่าทำไมและอย่างไร?
h0r53

1
backticks คือการแทนที่คำสั่ง - ใช้ทุกอย่างที่โปรแกรมพิมพ์ออกมาและใส่ไว้ในนิพจน์ ในกรณีนี้ "ซึ่ง" จะตรวจสอบ $ PATH เพื่อค้นหา Virtualenvwrapper.sh และส่งออกพา ธ ไป จากนั้นเชลล์จะอ่านสคริปต์ผ่านทาง 'source'
Erich

43

ฉันมีปัญหาเดียวกันใน OS X 10.9.1 กับ python 2.7.5 ไม่มีปัญหาเกี่ยวกับWORKON_HOMEสำหรับฉัน แต่ฉันไม่ได้ด้วยตนเองเพิ่มsource "/usr/local/bin/virtualenvwrapper.sh"ไป~/.bash_profile(หรือ~/.bashrcในยูนิกซ์) หลังจากที่ผมวิ่งpip install virtualenvwrapper


1
คุณเพิ่มแหล่งที่มา "/usr/local/bin/virtualenvwrapper.sh" ด้วยตนเองไว้ที่ใด
Gregology

1
@Gregology ~/.bash_profileฉันเพิ่มบรรทัดที่ โปรดทราบว่าเมื่อคุณเพิ่มครั้งแรกคุณจะต้องโหลดเทอร์มินัลใหม่ (ซึ่งรัน.bash_profile) หรือเรียกใช้sourceคำสั่งนั้นโดยตรงจากบรรทัดคำสั่ง
Nick Benes

1
จะเป็นประโยชน์มากหากคุณมีชื่อที่มีชื่อไฟล์และแสดงเนื้อหาทั้งหมดดังนั้นคุณจึงไม่ต้องรับคำถามติดตามเกี่ยวกับ "คุณวางไว้ที่ไหน?"
JGallardo

1
ไม่ว่าคุณจะใช้.bash_profileหรือ.bashrcไม่เป็นผลโดยตรงจากแพลตฟอร์มใดที่คุณใช้อยู่แม้ว่าแพลตฟอร์มใดแพลตฟอร์มหนึ่งอาจหายไปในบางแพลตฟอร์มก็ตาม ดูหน้าคู่มือ Bash สำหรับความแตกต่าง โดยทั่วไปคุณควรต้องการสิ่งนี้จริงๆในของคุณ.bash_profileแต่ distros บางแห่งใช้การตั้งค่าที่ซับซ้อน
tripleee

25

ข้อกำหนดเบื้องต้นในการดำเนินการคำสั่งนี้ -

  1. pip (ตัวย่อแบบเรียกซ้ำของP ip I nstalls P ackages) เป็นระบบการจัดการแพ็คเกจที่ใช้ในการติดตั้งและจัดการแพ็คเกจซอฟต์แวร์ที่เขียนด้วย Python หลายแพ็คเกจสามารถพบได้ใน Python Package Index (PyPI)

    sudo apt-get ติดตั้ง python-pip

  2. ติดตั้ง Virtual Environment ใช้เพื่อสร้างสภาพแวดล้อมเสมือนเพื่อติดตั้งแพ็กเกจและการอ้างอิงของหลายโปรเจ็กต์ที่แยกออกจากกัน

    sudo pip ติดตั้ง Virtualenv

  3. ติดตั้ง virtual environment wrapper เกี่ยวกับ virtual env wrapper

    sudo pip ติดตั้ง Virtualenvwrapper

หลังจากติดตั้งสิ่งที่จำเป็นต้องมีคุณต้องนำ wrapper สภาพแวดล้อมเสมือนมาสู่การดำเนินการเพื่อสร้างสภาพแวดล้อมเสมือน ต่อไปนี้เป็นขั้นตอน -

  1. ตั้งค่าไดเร็กทอรีสภาพแวดล้อมเสมือนในตัวแปรพา ธ - export WORKON_HOME=(directory you need to save envs)

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

ดังที่ @Mike กล่าวถึงแหล่งที่มา `ซึ่ง Virtualenvwrapper.sh` หรือ which virtualenvwrapper.shสามารถใช้เพื่อค้นหาไฟล์ Virtualenvwrapper.sh

ควรใส่ไว้เหนือสองบรรทัดใน ~ / .bashrc เพื่อหลีกเลี่ยงการดำเนินการคำสั่งด้านบนทุกครั้งที่คุณเปิดเชลล์ใหม่ นั่นคือทั้งหมดที่คุณต้องสร้างสภาพแวดล้อมโดยใช้mkvirtualenv

ประเด็นที่ควรทราบ -

  • ภายใต้ Ubuntu คุณอาจต้องติดตั้ง Virtualenv และ Virtualenvwrapper เป็นรูท เพียงเติมคำสั่งด้านบนด้วย sudo
  • เส้นทางไปยัง Virtualenvwrapper.sh ขึ้นอยู่กับกระบวนการที่ใช้ในการติดตั้ง Virtualenv ค้นหาเส้นทางที่เหมาะสมโดยรัน $ find / usr -name Virtualenvwrapper.sh ปรับบรรทัดในสคริปต์. bash_profile หรือ. bashrc ของคุณตามลำดับ

1
การเพิ่มบันทึก บน ubuntu 18.04 ฉันต้องรีบูตหลังจากติดตั้งแล้วจึงใช้งานได้
Dan Grahn

@screenmutt ขอบคุณสำหรับข้อมูลที่มีค่า ฉันอาจจะพลาดเพราะฉันใช้ ubuntu 16.04 อย่างไรก็ตามฉันต้องการทราบว่าคุณต้องรีบูตขั้นตอนใด หลังจากติดตั้งแพ็กเกจ pip หรือหลังจากตั้งค่า "virtual environment directory" แล้ว?
Keshav

หลังจากการติดตั้งกระดาษห่อหุ้ม มันทำงานหลังจากนั้น
Dan Grahn

1
@DanGrahn คุณไม่จำเป็นต้องรีบูตเพียงแค่ต้องรีรัน.bashrc- ไม่ว่าจะอย่างชัดเจนsource ~/.bashrcในเทอร์มินัลปัจจุบันของคุณหรือเปิดหน้าต่างเทอร์มินัลใหม่
TJ Ellis

12

ใช้โพรซีเดอร์นี้เพื่อสร้าง virtual env ใน ubuntu

ขั้นตอนที่ 1

ติดตั้ง pip

   sudo apt-get install python-pip

ขั้นตอนที่ 2

ติดตั้ง Virtualenv

   sudo pip install virtualenv

ขั้นตอนที่ 3

สร้าง dir เพื่อเก็บคุณธรรมของคุณ (ฉันใช้ ~ / .virtualenvs)

   mkdir ~/.virtualenvs

หรือใช้คำสั่งนี้เพื่อติดตั้ง python เวอร์ชันเฉพาะใน env

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

ขั้นตอนที่ 4

   sudo pip install virtualenvwrapper

ขั้นตอนที่ 5

   sudo nano ~/.bashrc

ขั้นตอนที่ 6

เพิ่มโค้ดสองบรรทัดนี้ที่ท้ายไฟล์ bashrc

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

ขั้นตอนที่ 7

เปิดเทอร์มินัลใหม่ (แนะนำ)

ขั้นตอนที่ 8

สร้าง Virtualenv ใหม่

  mkvirtualenv myawesomeproject

ขั้นตอนที่ 9

ในการโหลดหรือสลับระหว่าง Virtualenvs ให้ใช้คำสั่ง workon:

  workon myawesomeproject

ขั้นตอนที่ 10

หากต้องการออกจาก Virtualenv ใหม่ของคุณให้ใช้

 deactivate

และตรวจสอบให้แน่ใจว่าใช้ pip vs pip3

หรือทำตามขั้นตอนด้านล่างเพื่อติดตั้งสภาพแวดล้อมเสมือนโดยใช้ python3

ติดตั้ง env

python3 -m venv my-project-env

และเปิดใช้งานสภาพแวดล้อมเสมือนของคุณโดยใช้คำสั่งต่อไปนี้:

source my-project-env/bin/activate

6

ตั้งแต่ฉันไปด้วยการลากฉันจะพยายามเขียนคำตอบที่ฉันต้องการเมื่อสองชั่วโมงก่อน สำหรับผู้ที่ไม่ต้องการเพียงแค่คัดลอกและวางโซลูชัน

ประการแรก:คุณสงสัยหรือไม่ว่าทำไมการคัดลอกและวางเส้นทางจึงใช้ได้กับบางคนในขณะที่บางคนใช้ไม่ได้ ** เหตุผลหลักวิธีแก้ปัญหาแตกต่างกันไปคือเวอร์ชัน python ที่แตกต่างกันคือ 2.x หรือ 3.x มี Virtualenv และ Virtualenvwrapper เวอร์ชันที่แตกต่างกันซึ่งทำงานร่วมกับ python 2 หรือ 3 หากคุณใช้ python 2 ให้ติดตั้งดังนี้:

sudo pip install virutalenv
sudo pip install virtualenvwrapper

หากคุณกำลังวางแผนที่จะใช้ python 3 ให้ติดตั้ง python 3 เวอร์ชันที่เกี่ยวข้อง

sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper

คุณติดตั้งแพ็คเกจสำหรับเวอร์ชัน python ของคุณเรียบร้อยแล้วและพร้อมแล้วใช่ไหม? ลองดูสิ พิมพ์workonลงในเทอร์มินัลของคุณ เทอร์มินัลของคุณจะไม่พบคำสั่ง ( workonเป็นคำสั่งของ Virtualenvwrapper) แน่นอนมันจะไม่ Workonเป็นไฟล์ปฏิบัติการที่จะพร้อมใช้งานเมื่อคุณโหลด / ซอร์สไฟล์virtualenvwrapper.shเท่านั้น แต่คุณได้กล่าวถึงคู่มือการติดตั้งอย่างเป็นทางการแล้วใช่ไหม. เพียงแค่เปิด. bash_profile ของคุณและใส่สิ่งต่อไปนี้ตามที่ระบุไว้ในเอกสาร:

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

โดยเฉพาะอย่างยิ่งคำสั่งsource /usr/local/bin/virtualenvwrapper.shดูเหมือนจะมีประโยชน์เนื่องจากคำสั่งดูเหมือนจะโหลด / ซอร์สไฟล์ที่ต้องการvirtualenvwrapper.shซึ่งมีคำสั่งทั้งหมดที่คุณต้องการใช้งานเช่นworkonและmkvirtualenv. แต่ใช่ไม่ mkvirtualenv: command not foundเมื่อต่อไปนี้คู่มือการติดตั้งอย่างเป็นทางการคุณมีแนวโน้มมากที่ได้รับข้อผิดพลาดจากการโพสต์ครั้งแรก: ยังไม่พบคำสั่งใด ๆ และคุณยังคงหงุดหงิด แล้วปัญหาที่นี่คืออะไร? ปัญหาคือตอนนี้คุณยังไม่ได้ใช้ Virtualenvwrapper.sh เตือนความจำสั้น ๆ ... คุณกำลังดูที่นี่:

source /usr/local/bin/virtualenvwrapper.sh

แต่มีวิธีตรงไปตรงมาในการค้นหาไฟล์ที่ต้องการ เพียงพิมพ์

which virtualenvwrapper

ไปยังเครื่องปลายทางของคุณ สิ่งนี้จะค้นหาPATHของคุณสำหรับไฟล์เนื่องจากมีแนวโน้มมากที่จะอยู่ในโฟลเดอร์บางโฟลเดอร์ที่รวมอยู่ใน PATH ของระบบของคุณ

หากระบบของคุณแปลกใหม่มากไฟล์ที่ต้องการจะซ่อนอยู่นอกโฟลเดอร์ PATH ในกรณีนั้นคุณสามารถค้นหาเส้นทางไปvirtalenvwrapper.shด้วยคำสั่งเชลล์find / -name virtualenvwrapper.sh

ผลลัพธ์ของคุณอาจมีลักษณะดังนี้: /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh ยินดีด้วย You have found your missing file!. ตอนนี้สิ่งที่คุณต้องทำคือเปลี่ยนคำสั่งเดียวใน. bash_profile ของคุณ เพียงแค่เปลี่ยน:

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

ถึง:

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

ยินดีด้วย. Virtualenvwrapper ทำงานบนระบบของคุณแล้ว แต่คุณสามารถทำอีกอย่างเพื่อปรับปรุงโซลูชันของคุณ หากคุณพบไฟล์ที่virtualenvwrapper.shมีคำสั่งwhich virtualenvwrapper.shคุณก็รู้ว่าอยู่ในโฟลเดอร์ของ PATH ดังนั้นถ้าคุณแค่เขียนชื่อไฟล์ระบบไฟล์ของคุณจะถือว่าไฟล์นั้นอยู่ในโฟลเดอร์ PATH ดังนั้นคุณไม่จำเป็นต้องเขียนเส้นทางแบบเต็ม เพียงพิมพ์:

source "virtualenvwrapper.sh"

แค่นั้นแหละ. คุณไม่หงุดหงิดอีกต่อไป คุณได้แก้ไขปัญหาของคุณแล้ว หวังว่า.


ที่จริงฉันแค่คัดลอกและปรับแก้ปัญหาของคุณ
5

2

ในการติดตั้งvirtualenvwrapperบน Ubuntu 18.04.3 ให้สำเร็จคุณต้องทำสิ่งต่อไปนี้:

  1. ติดตั้ง virtualenv

    sudo apt install virtualenv
  2. ติดตั้ง virtualenvwrapper

    sudo pip install virtualenv
    sudo pip install virtualenvwrapper
  3. เพิ่มสิ่งต่อไปนี้ที่ส่วนท้ายของ.bashrcไฟล์

    export WORKON_HOME=~/virtualenvs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
    source ~/.local/bin/virtualenvwrapper.sh
  4. เรียกใช้.bashrcไฟล์

    source ~/.bashrc
  5. สร้างคุณธรรมของคุณ

    mkvirtualenv your_virtualenv

ใช้งานได้กับ ubuntu 20.04 เช่นกัน การแก้ไขเล็กน้อย tho: WORKON_HOME=~/.virtualenvsเป็นค่าเริ่มต้น ไม่จำเป็นต้องตั้งค่านั้น VIRTUALENVWRAPPER_PYTHON=/usr/bin/pythonยังเป็นค่าเริ่มต้น แต่เมื่อใช้ python3 สิ่งนี้มีประโยชน์ นอกจากนี้ควรใช้export PATH="$HOME/.local/bin:$PATH"สำหรับ python binary paths
scones

1

ใน Windows 7 และ Git Bash สิ่งนี้ช่วยฉันได้:

  1. สร้างไฟล์ ~ / .bashrc (ภายใต้โฟลเดอร์โฮมของผู้ใช้ของคุณ)
  2. เพิ่มบรรทัดการส่งออก WORKON_HOME = $ HOME / .virtualenvs (คุณต้องสร้างโฟลเดอร์นี้หากไม่มีอยู่)
  3. เพิ่มแหล่งที่มาของบรรทัด"C: \ Program Files (x86) \ Python36-32 \ Scripts \ Virtualenvwrapper.sh" (เปลี่ยนเส้นทางสำหรับ Virtualenvwrapper.sh ของคุณ)

รีสตาร์ท git bash และคำสั่ง mkvirtualenv ตอนนี้จะทำงานได้ดี


1

การใช้ Git Bash บน Windows 10 และ Python36 สำหรับ Windows ฉันพบ Virtualenvwrapper.sh ในที่ที่แตกต่างกันเล็กน้อยและการเรียกใช้สิ่งนี้ช่วยแก้ปัญหาได้

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

0

แก้ไขปัญหาของฉันใน Ubuntu 14.04 OS ด้วย python 2.7.6 โดยเพิ่มสองบรรทัดด้านล่างลงในไฟล์ ~ / .bash_profile (หรือ ~ / .bashrc ใน unix)

แหล่งที่มา "/usr/local/bin/virtualenvwrapper.sh"

ส่งออก WORKON_HOME = "/ opt / virtual_env /"

จากนั้นดำเนินการทั้งสองบรรทัดนี้ไปยังเทอร์มินัล


0

ใน Windows 10 ในการสร้างสภาพแวดล้อมเสมือนฉันแทนที่ " pip mkvirtualenv myproject" โดย " mkvirtualenv myproject" และทำงานได้ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.