Đề xuất của Stephen là một ý tưởng hay, nhưng tiếc là nó không hiệu quả nếu bạn chỉ đưa các yêu cầu trực tiếp vào hồ sơ của mình, điều này nghe có vẻ rõ ràng hơn đối với tôi.
Tất cả các phần phụ thuộc sẽ được gỡ cài đặt, bao gồm cả chính nó distribute
, chia nhỏ pip
.
Duy trì tệp yêu cầu sạch trong khi phiên bản theo dõi môi trường ảo
Đây là cách tôi cố gắng theo dõi phiên bản môi trường ảo của mình. Tôi cố gắng duy trì mức tối thiểu requirements.txt
, chỉ bao gồm các yêu cầu trực tiếp và thậm chí không đề cập đến các ràng buộc phiên bản mà tôi không chắc chắn.
Nhưng bên cạnh đó, tôi giữ và bao gồm theo dõi phiên bản (giả sử như git), trạng thái thực tế của virtualenv của tôi trong một venv.pip
tệp.
Đây là quy trình làm việc mẫu:
thiết lập không gian làm việc virtualenv, với theo dõi phiên bản:
mkdir /tmp/pip_uninstalling
cd /tmp/pip_uninstalling
virtualenv venv
. venv/bin/activate
khởi tạo hệ thống theo dõi phiên bản:
git init
echo venv > .gitignore
pip freeze > venv.pip
git add .gitignore venv.pip
git commit -m "Python project with venv"
cài đặt một gói với các phụ thuộc, bao gồm nó trong tệp yêu cầu:
echo flask > requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
Bây giờ hãy bắt đầu xây dựng ứng dụng của bạn, sau đó cam kết và bắt đầu một nhánh mới:
vim myapp.py
git commit -am "Simple flask application"
git checkout -b "experiments"
cài đặt một gói bổ sung:
echo flask-script >> requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
... chơi với nó, rồi quay lại phiên bản trước đó
vim manage.py
git commit -am "Playing with flask-script"
git checkout master
Bây giờ gỡ cài đặt các gói không liên quan:
pip freeze | grep -v -f venv.pip | xargs pip uninstall -y
Tôi cho rằng quá trình này có thể được tự động hóa với git hook, nhưng chúng ta đừng đi lạc đề.
Tất nhiên, sẽ hợp lý khi sử dụng một số hệ thống bộ nhớ đệm gói hoặc kho lưu trữ cục bộ như pip2pi