ข้อเสนอของ Stephen เป็นความคิดที่ดี แต่น่าเสียดายที่ไม่ได้ผลหากคุณใส่เฉพาะข้อกำหนดโดยตรงในไฟล์ซึ่งฟังดูสะอาดกว่าสำหรับฉัน
การอ้างอิงทั้งหมดจะถูกถอนการติดตั้งรวมถึงแม้กระทั่งการdistribute
ทำลายpip
ตัวเอง
การรักษาไฟล์ข้อกำหนดที่สะอาดในขณะที่เวอร์ชันติดตามสภาพแวดล้อมเสมือน
นี่คือวิธีที่ฉันพยายามติดตามเวอร์ชันสภาพแวดล้อมเสมือนของฉัน ฉันพยายามรักษาเพียงเล็กน้อยrequirements.txt
รวมถึงข้อกำหนดโดยตรงเท่านั้นและไม่ได้พูดถึงข้อ จำกัด ของเวอร์ชันที่ฉันไม่แน่ใจ
แต่นอกจากนี้ฉันยังเก็บและรวมไว้ในการติดตามเวอร์ชัน (พูดว่า git) สถานะจริงของ Virtualenv ของฉันในvenv.pip
ไฟล์
นี่คือตัวอย่างเวิร์กโฟลว์:
ติดตั้งพื้นที่ทำงาน Virtualenv พร้อมการติดตามเวอร์ชัน:
mkdir /tmp/pip_uninstalling
cd /tmp/pip_uninstalling
virtualenv venv
. venv/bin/activate
เริ่มต้นระบบติดตามเวอร์ชัน:
git init
echo venv > .gitignore
pip freeze > venv.pip
git add .gitignore venv.pip
git commit -m "Python project with venv"
ติดตั้งแพ็คเกจที่มีการอ้างอิงรวมไว้ในไฟล์ข้อกำหนด:
echo flask > requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
ตอนนี้เริ่มสร้างแอปของคุณจากนั้นยอมรับและเริ่มสาขาใหม่:
vim myapp.py
git commit -am "Simple flask application"
git checkout -b "experiments"
ติดตั้งแพ็คเกจเสริม:
echo flask-script >> requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
... เล่นกับมันแล้วกลับมาที่เวอร์ชันก่อนหน้า
vim manage.py
git commit -am "Playing with flask-script"
git checkout master
ตอนนี้ถอนการติดตั้งแพ็คเกจภายนอก:
pip freeze | grep -v -f venv.pip | xargs pip uninstall -y
ฉันคิดว่ากระบวนการสามารถเป็นไปโดยอัตโนมัติด้วย git hooks แต่อย่าไปนอกหัวข้อ
แน่นอนว่าควรใช้ระบบแคชแพ็กเกจหรือพื้นที่เก็บข้อมูลในเครื่องเช่นpip2pi