วิธีการตั้งค่าและใช้สภาพแวดล้อมแบบหลามเสมือนใน Ubuntu


73

สภาพแวดล้อมเสมือนของ Python ใช้เพื่อสร้างสภาพแวดล้อมของ Python ที่แยกได้เพื่อหลีกเลี่ยงการพึ่งพาและความขัดแย้งของรุ่นและยังดูแลปัญหาการอนุญาตทางอ้อมด้วย แต่วิธีที่ง่ายที่สุดในการตั้งค่าและใช้งานใน Ubuntu คืออะไร?

คำตอบ:


99

ด้วยvirtualenvwrapper(wrappers ที่ใช้งานง่ายสำหรับการทำงานของvirtualenv)

ติดตั้ง virtualenv

ติดตั้งvirtualenvด้วย

sudo apt-get install virtualenv

(สำหรับ Ubuntu 14.04 (เชื่อถือได้) ติดตั้งpython-virtualenv)

ติดตั้ง virtualenvwrapper

เหตุผลที่เราติดตั้งvirtualenvwrapperก็เพราะมันมีคำสั่งที่ดีและง่ายในการจัดการสภาพแวดล้อมเสมือนของคุณ มีสองวิธีในการติดตั้งvirtualenvwrapper:

เป็นแพ็คเกจของ Ubuntu (จาก Ubuntu 16.04)

วิ่ง

sudo apt install virtualenvwrapper

จากนั้นเรียกใช้

echo "source /usr/share/virtualenvwrapper/virtualenvwrapper.sh" >> ~/.bashrc

ใช้ pip

  1. ติดตั้งและ / หรืออัพเดท pip

    ติดตั้ง pip สำหรับ Python 2 ด้วย

    sudo apt-get install python-pip

    หรือ Python 3

    sudo apt-get install python3-pip

    (ถ้าคุณใช้ Python 3 คุณอาจต้องใช้pip3แทนpipในส่วนที่เหลือของคู่มือนี้)

    ไม่บังคับ (แต่แนะนำ):เปิดใช้งานการเติมข้อความอัตโนมัติของ bash สำหรับ pip

    วิ่ง

    pip completion --bash >> ~/.bashrc

    และเรียกใช้source ~/.bashrcเพื่อเปิดใช้งาน

  2. ติดตั้ง virtualenvwrapper

    เพราะเราต้องการหลีกเลี่ยงsudo pipเราติดตั้งvirtualenvwrapperในเครื่อง (โดยค่าเริ่มต้นภายใต้~/.local) ด้วย:

    pip install --user virtualenvwrapper

    และ

    echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
  3. แหล่งที่มา virtualenvwrapper ใน .bashrc

    echo "source ~/.local/bin/virtualenvwrapper.sh" >> ~/.bashrc

ตั้งค่า virtualenv และ virtualenvwrapper:

ก่อนอื่นเราส่งออกWORKON_HOMEตัวแปรซึ่งมีไดเรกทอรีที่จะเก็บสภาพแวดล้อมเสมือนของเรา มาทำสิ่งนี้กัน~/.virtualenvs

export WORKON_HOME=~/.virtualenvs

ตอนนี้ยังสร้างไดเรกทอรีนี้

mkdir $WORKON_HOME

และนำการส่งออกนี้ไปไว้ใน~/.bashrcไฟล์ของเราเพื่อให้ตัวแปรนี้ถูกกำหนดโดยอัตโนมัติ

echo "export WORKON_HOME=$WORKON_HOME" >> ~/.bashrc

นอกจากนี้เรายังสามารถเพิ่มเทคนิคพิเศษบางอย่างเช่นต่อไปนี้ซึ่งทำให้แน่ใจว่าหากpipสร้างสภาพแวดล้อมเสมือนจริงเพิ่มเติมมันจะอยู่ในWORKON_HOMEไดเรกทอรีของเราด้วย:

echo "export PIP_VIRTUALENV_BASE=$WORKON_HOME" >> ~/.bashrc 

แหล่งที่มา ~ / .bashrc เพื่อโหลดการเปลี่ยนแปลง

source ~/.bashrc

ทดสอบถ้ามันใช้งานได้

ตอนนี้เราสร้างสภาพแวดล้อมเสมือนจริงครั้งแรกของเรา -pอาร์กิวเมนต์เป็นตัวเลือกก็จะถูกใช้ในการตั้งรุ่นหลามต่อการใช้งาน มันสามารถเป็นpython3ตัวอย่าง

mkvirtualenv -p python2.7 test

คุณจะเห็นว่าสภาพแวดล้อมจะได้รับการตั้งค่าและในตอนนี้พรอมต์ของคุณจะรวมชื่อของสภาพแวดล้อมที่ใช้งานอยู่ในวงเล็บ นอกจากนี้ถ้าคุณเรียกใช้ตอนนี้

python -c "import sys; print sys.path"

คุณควรเห็นมาก/home/user/.virtualenv/...เพราะตอนนี้ไม่ได้ใช้แพคเกจไซต์ระบบของคุณ

คุณสามารถปิดการใช้งานสภาพแวดล้อมของคุณโดยการเรียกใช้

deactivate

และถ้าคุณต้องการทำงานอีกครั้งเพียงพิมพ์

workon test

สุดท้ายหากคุณต้องการลบสภาพแวดล้อมให้พิมพ์

rmvirtualenv test

สนุก!


ขอบคุณผู้เขียนบล็อกนี้


2
python-pipและpython-virtualenvสามารถติดตั้งได้ผ่าน Ubuntu repsitory ไม่จำเป็นต้องติดตั้งด้วยตนเอง
Timo

2
อย่างไรก็ตามใน Ubuntu เราแนะนำแพ็คเกจ Ubuntu ด้วยเหตุผลหลายประการ ไม่มีอะไรผิดปกติกับ pip หรือ virtualenv รุ่นเก่า แต่มีความสามารถอย่างสมบูรณ์แบบ
tumbleweed

1
@GerhardBurger: หากคุณสร้าง virtualenv ของ python มันจะได้ pip ที่ใช้งานได้ใน python3 หากคุณใช้ virtualenv ของ Ubuntu เพื่อสร้าง virtualenv ทุกสิ่งที่คุณทำจะถูกเก็บไว้ใน virtualenv หากคุณเริ่ม sudo easy_installing stuff มันจะทำให้เกิดความยุ่งเหยิงไปทั่ว / usr / local นั่นเป็นเรื่องที่ไม่ยุ่งยากในการทำความสะอาด
tumbleweed

ดูเหมือนว่าไม่จำเป็นต้องใช้นามแฝงในขณะนี้: --no-site-packagesเป็นค่าเริ่มต้นและ--distributeเลิกใช้แล้ว
int_ua

ในกรณีที่mkvirtualenv testใช้งานไม่ได้ดู: stackoverflow.com/questions/15608236/…
Nikos Alexandris

8

สภาพแวดล้อมเสมือนจริงมีวิธีในการจัดการและแยกการพึ่งพาบนพื้นฐานต่อโครงการ นอกจากนี้พวกเขายังหลีกเลี่ยงทั้งsudo pip installสถานการณ์ซึ่งเป็นความเสี่ยงด้านความปลอดภัยที่ผมได้อธิบายไว้ในhttps://askubuntu.com/a/802594/15003 เอกสารหลามอย่างเป็นทางการนอกจากนี้ยังส่งเสริมการใช้สภาพแวดล้อมเสมือน

วิธีที่ง่ายที่สุดในการสร้างและใช้สภาพแวดล้อมเสมือนจริงสำหรับทั้งงูหลาม 2 และ Python 3 คือการติดตั้งvirtualenvใช้หรือapt apt-getสำหรับแต่ละโครงการ Python ให้สร้าง virtualenv จากนั้นเปิดใช้งาน โปรดทราบว่า virtualenv นั้นใช้สำหรับ Python รุ่นใดรุ่นหนึ่งโดยเฉพาะ หลังจากเปิดใช้งานให้ใช้pipเพื่อติดตั้งแพ็กเกจ Python ตามปกติไม่ว่าคุณจะใช้ Python 2 หรือ 3 ก็ตาม ไม่จำเป็นต้องใช้pip3สำหรับ Python 3 sudoเท่านั้นใช้ในการติดตั้งvirtualenvและไม่ได้ใช้กับpipดังนั้นจึงหลีกเลี่ยงความเสี่ยงด้านความปลอดภัยดังกล่าว คำสั่งที่ต้องทำคือ:

sudo apt update
sudo apt install virtualenv
cd ~/desired_directory  # cd to desired_directory
virtualenv venv  # create virtualenv named venv for default system Python, which is Python 2 for Ubuntu
source venv/bin/activate  # activate virtualenv
pip install -U pip  # upgrade pip in case it is outdated
pip install desired_package  # install desired_package

หากคุณต้องการสร้าง virtualenv สำหรับ Python 3 ให้แทนที่virtualenv venvด้วย:

virtualenv venv -p python3

อ่านเพิ่มเติมเกี่ยวกับระฆังและนกหวีดต่างๆสำหรับvirtualenvที่https://virtualenv.pypa.io/en/stable/


1
sourceช่วยฉันได้มากคำสั่ง
vnpnlz

OSError: [Errno 40] การเชื่อมโยงสัญลักษณ์หลายระดับเกินไป: '/ var / www / html / python / check / venv / bin / python'
Saravanan Nandhan

@SaravananNandhan โปรดถามคำถามใหม่พร้อมรายละเอียดที่จำเป็นแทน
edwinksl


3

ด้วยโมดูล venvจาก Python 3.3 (และ Ubuntu 15.10)

สภาพแวดล้อมเสมือนจริง (venvs) ได้รับความนิยมมากจนทำให้ฟังก์ชั่นนี้รวมอยู่ในหลามเอง (จาก 3.3 เป็นต้นไป) ในการใช้งานบน Ubuntu คุณต้องติดตั้งpython3-venv(เนื่องจากensurepipโมดูลไม่พร้อมใช้งาน):

sudo apt-get install python3-venv

หลังจากนั้นคุณสามารถใช้

pyvenv myvirtualenv

myvirtualenvเพื่อสร้างสภาพแวดล้อมเสมือนจริงที่เรียกว่า จากนั้นคุณสามารถใช้

source myvirtualenv/bin/activate

เพื่อเปิดใช้งานสภาพแวดล้อมเสมือน หากต้องการปิดใช้งานเพียงพิมพ์

deactivate

แก้ไข:สคริปต์ได้เลิกในความโปรดปรานของpyvenv python3 -m venvวิธีนี้จะช่วยป้องกันความสับสนว่า Python interpreter pyvenvเชื่อมต่อกับอะไรและจะใช้ Python interpreter ใดในสภาพแวดล้อมเสมือน (ที่มา )

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