2012-06-13 39 views
16

Tôi đang cố gắng cài đặt phần mềm python bằng cách sử dụng tệp yêu cầu.pip không thể cài đặt gói từ requirements.txt

>> cat requirements.txt 
Cython==0.15.1 
numpy==1.6.1 
distribute==0.6.24 
logilab-astng==0.23.1logilab-common==0.57.1 
netaddr==0.7.6 
numexpr==2.0.1 
ply==2.5 
pycallgraph==0.5.1 
pyflowtools==0.3.4.1 
pylint==0.25.1 
tables==2.3.1 
wsgiref==0.1.2 

Vì vậy, tôi tạo ra một môi trường ảo

>> mkvirtualenv parser 

(parser) 
>> pip freeze 
distribute==0.6.24 
wsgiref==0.1.2 

(parser) 
>> pip install -r requirements.txt 

... và sau đó tôi gói tải về nhưng không được cài đặt với các lỗi: http://pastie.org/4079800

(parser) 
>> pip freeze 
distribute==0.6.24 
wsgiref==0.1.2 

Đáng ngạc nhiên, nếu tôi cố gắng tự cài đặt mỗi gói, họ cài đặt tốt. Ví dụ:

>> pip install numpy==1.6.1 

(parser) 
>> pip freeze 
distribute==0.6.24 
wsgiref==0.1.2 
numpy==1.6.1 

Tôi bị mất. Chuyện gì vậy?

PS: Tôi đang sử dụng pip v1.1 và python v2.7.2 với virtualenvvirtualenvwrapper

Trả lời

15

Dường như gói numexpr có một sự phụ thuộc cài đặt thời gian thực trên NumPy. Pip làm cho hai đi qua yêu cầu của bạn: đầu tiên nó tải về tất cả các gói và chạy mỗi setup.py của mỗi người để có được siêu dữ liệu của nó, và sau đó nó cài đặt tất cả trong một vượt qua thứ hai.

Vì vậy, numexpr đang cố gắng nhập từ numpy trong setup.py của nó, nhưng khi pip lần đầu tiên chạy setup.py của numexpr, nó chưa được cài đặt gọn gàng. Đây cũng là lý do tại sao bạn không thấy lỗi này khi bạn cài đặt từng gói một: nếu bạn cài đặt từng gói một, thì sẽ được cài đặt đầy đủ trong môi trường của bạn trước khi bạn pip install numexpr.

Giải pháp duy nhất là cài đặt pip install numpy trước khi bạn chạy pip install -r requirements.txt - bạn sẽ không thể thực hiện việc này trong một lệnh bằng một tệp requirements.txt duy nhất.

Thông tin thêm tại đây: https://github.com/pypa/pip/issues/25

+2

Điều này trông giống như lỗi đóng gói trong numexpr; setup.py của nó phải được sửa đổi để chỉ nhập từ không có vướng víu nếu bạn đang thực sự xây dựng nó, ví dụ: bằng cách bắt 'ImportError' và tiếp tục mà không có' extra_setup_opts' nếu bạn chỉ đang chạy 'setup.py egg_info'. – ejucovy

+3

Chúng tôi (pip) có lẽ nên có một hướng dẫn về điều này hoặc ít nhất là liên kết đến các tài liệu hiện có. –

+2

Bạn nên [gửi một vấn đề] (http://code.google.com/p/numexpr/issues/entry) bằng numexpr – jterrace

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