2013-06-17 42 views
17

Có thể buộc virtualenv sử dụng các công cụ cài đặt mới nhất và pip có sẵn từ pypi không? Về cơ bản, tôi đang tìm kiếm đối diện của cờ --never-download.Làm thế nào để buộc virtualenv cài đặt các công cụ cài đặt mới nhất và pip từ pypi?

Hiện tại, khi tôi tạo virtualenv mới, nó sử dụng phiên bản địa phương (cũ) đi kèm với virtualenv.

$ v.mk testvenv 
New python executable in testvenv/bin/python 
Installing setuptools............done. 
Installing pip...............done. 
$ pip show setuptools 
--- 
Name: setuptools 
Version: 0.6c11 
Location: /Users/cwilson/.virtualenvs/testvenv/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg 
Requires: 
$ pip search setuptools 
[...] 
setuptools    - Easily download, build, install, upgrade, and 
          uninstall Python packages 
INSTALLED: 0.6c11 
LATEST: 0.7.2 
[...] 

Trả lời

11

Không được hỗ trợ vì lý do bảo mật.

Sử dụng virtualenv.py như một kịch bản bị cô lập (nghĩa là không phải là một liên thư mục virtualenv_support) không còn được hỗ trợ cho an ninh lý do và sẽ thất bại với một lỗi. Cùng với điều này, --never-download giờ đây luôn được ghim thành True và chỉ được duy trì trong thời gian ngắn để tương thích ngược (Pull # 412).

tôi không thể sử dụng tùy chọn --extra-search-dir hoặc vì nó hiện đang bị phá vỡ https://github.com/pypa/virtualenv/issues/327

Hình như lựa chọn duy nhất là chỉ cần chờ đợi cho các nhà bảo trì virtualenv để cập nhật các gói kèm?

8

Bạn có thể nâng cấp pip sau khi cài đặt virtualenv bằng cách sử dụng pip install -U pip.

Tôi chắc chắn bạn có thể viết tập lệnh khởi động để tự động hóa bước này.

2

Tôi cần thư viện setuptools mới nhất và cờ --extra-search-dir không hoạt động đối với tôi (mặc dù nó đã được khắc phục rõ ràng).

Tuy nhiên, tạo virtualenv mà không cần thiết lập và sau đó cài đặt trực tiếp từ PyPi đã hoạt động rất tốt. Ví dụ: để thiết lập một virtualenv gọi test:

virtualenv --no-setuptools test 
source test/bin/activate 
wget https://bootstrap.pypa.io/ez_setup.py -O - | python 
easy_install pip 

Testing với

python -c 'import setuptools; print setuptools.__version__' 

cho thấy phiên bản đúng.

+0

giải pháp rất tốt đẹp! – pymarco

0

xây dựng trên ematsen của excellent answer tôi đã thực hiện một kịch bản bash làm việc với virtualenvwrapper

#!/bin/bash 
source `which virtualenvwrapper.sh` 
mkvirtualenv --no-setuptools $1 
wget https://bootstrap.pypa.io/ez_setup.py -O - | python 
rm setuptools-*.zip 
easy_install pip 

# for python version < 2.7.9 
# https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings 
pip install urllib3[secure] 
0

Tôi chạy vào cùng một vấn đề, và tôi cố định nó bằng cách nâng cấp setuptools.

Nếu env là env ảo của bạn, chạy như sau:

$ env/bin/pip install --upgrade setuptools

Các vấn đề liên quan