ฉันพยายามเขียน (สิ่งที่ฉันคิดว่าเป็น) สคริปต์ทุบตีง่ายๆที่จะ:
- ใช้ virtualenv เพื่อสร้างสภาพแวดล้อมใหม่ที่ $ 1
- เปิดใช้งานสภาพแวดล้อมเสมือนจริง
- ทำบางสิ่งเพิ่มเติม (ติดตั้ง django เพิ่ม django-admin.py ไปยังเส้นทางของ virtualenv ฯลฯ )
ขั้นตอนที่ 1 ทำงานได้ค่อนข้างดี แต่ฉันไม่สามารถเปิดใช้งาน virtualenv ได้ สำหรับผู้ที่ไม่คุ้นเคยกับ virtualenv มันจะสร้างactivate
ไฟล์ที่เปิดใช้งานสภาพแวดล้อมเสมือน จาก CLI คุณเรียกใช้โดยใช้source
source $env_name/bin/activate
โดยที่ $ env_name เห็นได้ชัดว่าเป็นชื่อของ dir ที่ติดตั้ง env เสมือน
ในสคริปต์ของฉันหลังจากสร้างสภาพแวดล้อมเสมือนฉันเก็บเส้นทางไปยังสคริปต์เปิดใช้งานเช่นนี้:
activate="`pwd`/$ENV_NAME/bin/activate"
แต่เมื่อฉันโทรsource "$activate"
ฉันจะได้รับสิ่งนี้:
/home/clawlor/bin/scripts/djangoenv: 20: source: not found
ฉันรู้ว่ามีเส้นทางที่ถูกต้องไปยังสคริปต์เปิดใช้งานในความเป็นจริงผมยังทดสอบที่ไฟล์จะมีก่อนที่ผมจะโทร$activate
source
แต่source
ตัวมันเองก็หาไม่เจอ ฉันได้ลองทำทุกขั้นตอนด้วยตนเองใน CLI ซึ่งทุกอย่างทำงานได้ดี
ในการวิจัยของฉันฉันพบสคริปต์นี้ซึ่งคล้ายกับสิ่งที่ฉันต้องการ แต่ยังทำสิ่งอื่น ๆ อีกมากมายที่ฉันไม่ต้องการเช่นการจัดเก็บสภาพแวดล้อมเสมือนทั้งหมดในไดเรกทอรี ~ / .virtualenv (หรืออะไรก็ตามที่อยู่ใน $ WORKON_HOME) แต่สำหรับฉันแล้วดูเหมือนว่าเขากำลังสร้างเส้นทางไปactivate
และเรียกsource "$activate"
โดยทั่วไปว่าเป็นฉัน
นี่คือสคริปต์ที่ครบถ้วน
#!/bin/sh
PYTHON_PATH=~/bin/python-2.6.1/bin/python
if [ $# = 1 ]
then
ENV_NAME="$1"
virtualenv -p $PYTHON_PATH --no-site-packages $ENV_NAME
activate="`pwd`/$ENV_NAME/bin/activate"
if [ ! -f "$activate" ]
then
echo "ERROR: activate not found at $activate"
return 1
fi
source "$activate"
else
echo 'Usage: djangoenv ENV_NAME'
fi
การปฏิเสธความรับผิด: สคริปต์ทุบตีของฉันค่อนข้างอ่อนแอ ฉันค่อนข้างสบายใจที่ CLI แต่อาจมีเหตุผลบางอย่างที่โง่มากที่นี่ไม่ทำงาน