2013-09-03 40 views
11

Tôi đang cố gắng thiết lập môi trường phát triển trên máy tính dev mới của tôi ở nhà. Tôi vừa cài đặt Ubuntu và bây giờ tôi đang cố gắng sao chép một repo từ xa từ máy chủ web của chúng tôi và cài đặt các phụ thuộc của nó để tôi có thể bắt đầu công việc.Pip không cài đặt gói vào virtualenv được kích hoạt, bỏ qua requirements.txt

Cho đến nay tôi đã cài đặt thủ công virtualenvvirtualenvwrapper từ pypi và chỉnh sửa bash.rc của tôi một cách thích hợp để nguồn virtualenv của tôi khi tôi khởi động thiết bị đầu cuối của mình. Sau đó tôi nhân bản repo của mình thành ~/projects/project-name/websitename.com. Sau đó, tôi đã sử dụng virtualenvwrapper để mkvirtualenv env-name từ ~/projects/project-name/websitename.com. Điều này phản ánh chính xác số file-structure/setup của máy chủ web mà tôi đang nhân bản. Càng xa càng tốt.

Tôi đã đăng nhập vào máy chủ dev và kích hoạt virtualenv ở đó và sử dụng pip freeze -l > req.txt để hiển thị danh sách phụ thuộc và scp vào máy cục bộ của tôi. Tôi kích hoạt virtualenv trên máy cục bộ của mình, điều hướng đến số ~/projects/project-name/websitename.com và thực hiện pip install -r path-to-req.txt và nó chạy qua tất cả các phụ thuộc như thể không có gì sai. Tuy nhiên, khi tôi cố gắng để manage.py syncdb tôi nhận được một lỗi về việc không tìm các gói django lõi. Cái quái gì thế? Vì vậy, tôi con số bằng cách nào đó Django không cài đặt, i run pip install Django==1.5.1 và nó hoàn thành thành công. Tôi đã thiết lập lại trang web của mình và gặp lỗi khác về không có mô-đun có tên django_extensions. Được rồi, cái quái gì với nó, tôi vừa cài đặt tất cả các gói này bằng pip ?!

Vì vậy, tôi pip freeze -l > test.txtcat test.txt, danh sách này là gì? Django==1.5.1, một gói tôi vừa cài đặt theo cách thủ công. Tại sao pip không cài đặt các phụ thuộc của tôi từ danh sách được chỉ định của tôi vào virtualenv của tôi? Tôi đang làm gì ở đây?

-EDIT -------------

nào pip mang lại cho tôi đường dẫn đến pip trong virtualenv tôi

Tôi chỉ có 1 virtualenv và nó được kích hoạt

+3

Mọi thứ bạn đang làm có vẻ ổn, hãy thử gỡ lỗi bằng 'pip' nào. – elyase

+0

cũng thử 'find ~/.virtualenvs -type d -iname" anypackage "' để xem các gói yêu cầu của bạn có được cài đặt hay không. Ngoài ra, tôi khuyên bạn nên sử dụng 'https: // gist.github.com/insin/1425703' để cung cấp lời nhắc tốt đẹp về virtualenv được kích hoạt trong bash của bạn. – sagarchalise

+0

chạy lệnh của bạn, các gói duy nhất trong virtualenv của tôi là lệnh tôi đã yêu cầu pip để cài đặt Django, tất cả các gói khác được xử lý bằng pip trong tệp yêu cầu đều bị bỏ qua. Tôi cũng bằng cách nào đó có được một dấu nhắc tốt đẹp cho biết virtualenv tôi đã kích hoạt. – leotemp

Trả lời

6

công việc bình thường của tôi là

pip freeze > someFile.txt 

và sau đó cài đặt với

pip install -r someFile.txt 

Vì vậy, tôi chắc chắn rằng điều này sẽ hoạt động tốt. Đáng tiếc là tôi không thể thực sự nói với bạn bất cứ điều gì ngoài việc đảm bảo để kiểm tra xem

  1. Bạn thực sự đang ở trong virtualenv mà bạn nghĩ rằng bạn đang ở trong. Hãy chắc chắn để chạy

    workon yourVirtualEnvName 
    

    để kích hoạt nó chỉ trong trường hợp có vấn đề.

  2. Đảm bảo kiểm tra xem pip có nằm trong virtualenv của bạn hay không.

    which pip 
    

    mang lại cho tôi

    /path/to/home/.virtualenvs/myVirtEnv/bin/pip 
    

Xin lỗi tôi không thể cung cấp cho bạn một câu trả lời cụ thể hơn. Tôi phải làm điều này bán thường xuyên và tôi đã không bao giờ có một vấn đề với nó bỏ qua phụ thuộc. May mắn nhất!

+2

Huh, yeah, im chạy pip install -r someFile.txt và tôi thậm chí xem như nó nói nó đang tải xuống và cài đặt nhưng sau đó các gói không tồn tại. Ví dụ: nói: Tải xuống/giải nén django-extensions == 1.1.1 (từ -r req.txt (dòng 14)) Tải xuống django-extensions-1.1.1.tar.gz (149kB): 149kB đã tải xuống Đang chạy setup.py egg_info cho gói django-extensions . Nhưng các tiện ích mở rộng django-extensions không xuất hiện để được cài đặt và vẫn gây ra lỗi khi được gọi. Nó cũng không xuất hiện khi tôi đóng băng .. – leotemp

+5

bạn đã gửi một giải pháp cho điều này? Tôi có cùng một vấn đề. – ajay

3

Đấu tranh với một số biến thể của vấn đề này cách đây không lâu; nó đã kết thúc là tập tin .bash_profile lộn xộn của tôi.

Hãy chắc chắn rằng bạn không có bất cứ điều gì có thể mess lên virtualenv của bạn bên trong của bạn .bash_profile/.bashrc, chẳng hạn như $VIRTUAL_ENV hoặc $PYTHONHOME hay $PYTHONPATH biến môi trường.

2

Tôi biết đây là một bài đăng cũ, nhưng tôi vừa gặp phải sự cố tương tự. Trong trường hợp của tôi, nguyên nhân là tôi đang chạy lệnh pip install bằng cách sử dụng sudo. Điều này làm cho lệnh chạy trên toàn cầu và các gói cài đặt trong đường dẫn python toàn cầu.

Hy vọng rằng sẽ giúp ai đó.

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