2013-05-31 40 views
9

Khi cố gắng để cài đặt virtualenv sử dụng một con trăn ủ, tôi nhận được lỗi sau:Không thể PIP cài đặt virtualenv trong OS X 10.8 với python ủ 2,7

$ pip install virtualenv 
Requirement already satisfied (use --upgrade to upgrade): \ 
    virtualenv in /Library/Python/2.7/site-packages/virtualenv-1.9.1-py2.7.egg 
Cleaning up... 

pip Vì vậy, rõ ràng là bằng cách nào đó nhìn vào python hệ thống thư mục thay vì thư mục được ủ trong/usr/local. Làm thế nào tôi có thể tránh điều này?

Bác sĩ pha chế không tìm thấy sự cố nào và mức độ ưu tiên của đường dẫn được đặt là ok.

Tôi đã cố xóa gói virtualenv khỏi trăn hệ thống, để tôi có thể cài đặt virtualenv với pip được pha. Nhưng sau đó tôi không thể tạo virtualenvs, như tôi đã nhận lỗi này:

$ virtualenv datatransfer/ 
Traceback (most recent call last): 
    File "/usr/local/bin/virtualenv", line 5, in <module> 
    from pkg_resources import load_entry_point 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2603, in <module> 
    working_set.require(__requires__) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 666, in require 
    needed = self.resolve(parse_requirements(requirements)) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 565, in resolve 
    raise DistributionNotFound(req) # XXX put more info here 
pkg_resources.DistributionNotFound: virtualenv==1.9.1 

Vì vậy, tôi đã không được quản lý để tránh những virtualenv hệ thống.

Tôi đang làm gì sai?

+0

Hãy xem trang wiki này: https://github.com/mxcl/homebrew/wiki/Homebrew-and-Python. Nó giải thích làm thế nào để chỉnh sửa PYTHONPATH và PATH của bạn để hệ thống của bạn tìm thấy các python ủ đầu tiên. – SethMMorton

+0

@SethMMorton PATH đã đúng và PYTHONPATH trống. Những gì tôi thấy trong wiki này là python ủ cũng tìm kiếm các mô-đun tại /Library/Python/2.7/site-packages. Nhưng sau đó các virtualenvs được tạo ra với lệnh hệ thống trong thư mục đó sử dụng python được ủ? – RogerFC

+0

điều gì sẽ xảy ra khi bạn gõ 'which python' và' which pip'? – SethMMorton

Trả lời

0

Tôi thấy rằng không giống như bạn đường dẫn của tôi đã sai theo bác sĩ pha chế. Nhưng sau khi sửa chữa mà tôi vẫn có vấn đề (không có bất ngờ cho mô tả của bạn) vì vậy tôi đã gỡ cài đặt virtualenv rồi cài đặt lại nhưng lần này với sudo, sudo pip install virtualenv

Điều này đã giải quyết được vấn đề. cấu hình hệ thống nói chung hoặc người có nhiều hơn một giờ kinh nghiệm Python của tôi sẽ có thể chỉ ra lý do tại sao nó không tốt (tôi nghĩ rằng nó liên quan đến cài đặt toàn cầu được coi là một thực tế xấu).

Seth là vào một cái gì đó với which vẻ như bạn thấy giống như tôi,

~ which python kết quả trong /usr/local/bin/python

~ ls -l /usr/local/bin/python mang lại cho tôi _permissions_etc_ /usr/local/bin/python -> ../Cellar/python/2.7.5/bin/python

Pip

which pip chỉ vào /usr/local/bin/pip

ls -l /usr/local/bin/pip lãm _permissions_etc_ /usr/local/bin/pip -> ../Cellar/python/2.7.5/bin/pip

virtualenv (Tôi không có một đầu ra trước khi sudo pips cài đặt)

which virtualenv/usr/local/bin/virtualenv

ls -l /usr/local/bin/virtualenv lãm _permissions_etc_ /usr/local/bin/virtualenv

Khi tôi tạo ra và sử dụng một virtualenv tôi nhận được thông tin sau,

workon ve_test 
which python 
/Users/_username_/.virtualenvs/ve_test/bin/python 
(ve_test)➜ ~PIP_VIRTUALENV_BASE python --version 
Python 2.7.5 
.210

FWIW zshrc của tôi có những điều sau đây,

# Python related 
# http://hackercodex.com/guide/python-virtualenv-on-mac-osx-mountain-lion-10.8/ 
# http://docs.python-guide.org/en/latest/dev/virtualenvs.html 
source /usr/local/bin/virtualenvwrapper.sh 
# virtualenv should use Distribute instead of legacy setuptools 
export VIRTUALENV_DISTRIBUTE=true 
# Centralized location for new virtual environments 
export PIP_VIRTUALENV_BASE=$HOME/Projects/PythonVirtualEnv 
# cache pip-installed packages to avoid re-downloading 
export PIP_DOWNLOAD_CACHE=$HOME/.pip/cache 
1

Điều gì thực sự gây ra và vấn đề đối với tôi là sự hiện diện của .pydistutils.cfg trong thư mục $HOME tôi. Đó là những gì buộc tôi phải sử dụng: sudo pip install <package>.

Nếu bạn phải sử dụng sudo để cài đặt gói qua số pip, bạn đang làm sai và bạn cần bắt đầu xử lý sự cố hệ thống của mình ngay lập tức; nếu không mọi thứ sẽ thất bại và bạn sẽ không biết tại sao.

Chạy: brew doctor sẽ cảnh báo bạn về tệp .pydistutils.cfg, vì vậy đừng quên theo dõi trạng thái của lệnh đó sau khi thực hiện các thay đổi cốt lõi cho hệ thống của bạn.

Tôi mất một lúc để theo dõi điều này, nhưng tất cả đều tốt. This really helped

19

tôi đã cùng một vấn đề và tôi quản lý để giải quyết nó bằng cách gỡ bỏ cài đặt bất kỳ phiên bản brew của Python và virtualenv

brew uninstall python 
brew uninstall pyenv-virtualenv 

thủ di chuyển tất cả các virtualenv file * Tôi tìm thấy dưới /usr/local/bin đến một thư mục khác

sudo mkdir /usr/local/bin/venv-old 
sudo mv /usr/local/bin/virtualenv* /usr/local/bin/venv-old/ 

Mở tab thiết bị đầu cuối mới và kiểm tra kỹ xem tôi có ở trạng thái sạch không

which python # => /usr/bin/python 
which virtualenv # => virtualenv not found 

Và cài đặt Python và virtualenv (wrapper) sạch bằng cách sử dụng phương pháp được đề xuất (herehere):

brew install python --with-brewed-openssl 
# Open a new terminal tab now (to access /usr/local/bin/python) 
pip install virtualenv 
pip install virtualenvwrapper 
+0

Đây là giải pháp vững chắc nhất mà tôi tìm thấy mà không cần phải 'sudo' tái instal bất cứ điều gì. Cảm ơn bạn! – Geekfish

+0

Nếu, như trên hệ thống của tôi, '/ usr/local/bin/virtualenv' tiếp tục tồn tại ngay cả sau khi chạy' pip uninstall virtualenv', có vẻ như bạn có thể xóa bằng tay '/ usr/local/bin/virtualenv' và sau đó là' pip install' cung cấp một phiên bản virtualenv chạy thành công. – npdoty

+0

Vâng, đó là lý do tại sao tôi đề nghị chuyển tất cả các công cụ '/ usr/local/bin/virtualenv *' sang một thư mục mới. Tôi không thích xóa vĩnh viễn bất cứ thứ gì bên ngoài thư mục chính của mình, vì bạn không bao giờ biết tiện ích hệ thống nào có thể phụ thuộc vào nó. – metakermit

1

tôi đã cùng một vấn đề và tìm ra giải pháp trên một nhóm Google. Có vẻ như/usr/local/bin/virtualenv không được cập nhật nên nếu bạn mở nó, bạn sẽ thấy một tham chiếu đến virtualenv 1.9.1 cũ khi một phiên bản mới hơn đã được cài đặt trên hệ thống của bạn.

Vì vậy, bạn chỉ cần mở thư mục/usr/local/bin/virtualenv và thay thế bằng:

#!/usr/local/bin/python 
# -*- coding: utf-8 -*- 
import re 
import sys 
from virtualenv import main 

if __name__ == '__main__': 
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) 
sys.exit(main()) 

Và đó làm việc cho tôi!

Nguồn: https://groups.google.com/forum/#!topic/python-virtualenv/hL_QDPJsnuY

+0

điều này làm việc cho tôi! thực sự tôi đã có một tập lệnh virtualenv rất cũ ngay tại đó, vì lý do nào đó đã thách thức việc gỡ cài đặt. – gabe

4

tôi đã cùng một vấn đề,

cho tôi

sudo mv /usr/local/bin/virtualenv* /usr/local/bin/venv-old/

các

pip install -I virtualenv

Tôi không phải gỡ bỏ cài đặt và cài đặt lại python.

+0

Cảm ơn rất nhiều, đã làm việc cho tôi! – ademarizu

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