2012-12-31 34 views
5

Tôi đã cố gắng để bắt kịp và chạy với mô-đun "venv" tích hợp của Python 3.3 trên máy OS X của tôi. Tôi đã cài đặt Python 3.3 bằng Homebrew.Cài đặt phân phối trong Python 3.3 venv (OS X/Homebrew)

Theo các tài liệu, tạo và chuyển sang môi trường ảo hoạt động như bạn mong muốn:

$ python3 -m venv myvenv 
$ source myvenv/bin/activate 

Và tôi đã thử nghiệm một cái gì đó như thế này:

$ echo "YEAH = 'YEAH!'" > myvenv/lib/python3.3/site-packages/thingy.py 
$ python 
>>> import thingy 
>>> print(thingy.YEAH) 
'YEAH!' 

Nhưng khi tôi cố gắng để cài đặt phân phối, nó sẽ không đi đúng chỗ. Đối với một số lý do, nó khăng khăng cố gắng để cài đặt vào /usr/local/lib/python3.3/site-packages/, mà không thành công với thông báo sau:

No setuptools distribution found 
running install 
Checking .pth file support in /usr/local/lib/python3.3/site-packages/ 
/Users/victor/myvenv/bin/python -E -c pass 
TEST FAILED: /usr/local/lib/python3.3/site-packages/ does NOT support .pth files 
error: bad install directory or PYTHONPATH 

You are attempting to install a package to a directory that is not 
on PYTHONPATH and which Python does not read ".pth" files from. The 
installation directory you specified (via --install-dir, --prefix, or 
the distutils default setting) was: 

    /usr/local/lib/python3.3/site-packages/ 

and your PYTHONPATH environment variable currently contains: 

    '' 

Điều này xảy ra bất kể nếu tôi cố gắng để cài đặt sử dụng distribute_setup.py hoặc bằng cách sử dụng phân phối nguồn trực tiếp. Tôi thậm chí đã thử sử dụng --prefix=/Users/victor/myenv nhưng nó vẫn cố gắng để đưa tất cả mọi thứ trong các trang web "toàn cầu" của tôi.

Tôi không thể hiểu tại sao điều này xảy ra, nhưng nó nhất quán trên hai máy của tôi. Lưu ý rằng sys.prefix báo cáo đường dẫn chính xác (môi trường ảo).

Đây có phải là vấn đề với Homebrew không? OS X? Python 3.3? venv? Tôi?

+2

Cài đặt phân phối 0.6.33 vào một tác phẩm venvà tốt cho tôi với python.org 3.3.0 từ trình cài đặt python.org 64-/32-bit trên 10.8. –

+1

Tôi đã hoàn toàn ngừng sử dụng python.org vì sự tiện lợi của Homebrew. Nhưng trình cài đặt của họ cũng hoạt động cho tôi. Vì vậy, nó có thể là một vấn đề với cách cài đặt Python của Homebrew. – vicvicvic

+1

FWIW, nó cũng hoạt động tốt với cổng MacPorts python33. Vì vậy, có, rất có thể một số lỗ hổng trong một công thức Homebrew. –

Trả lời

3

Điều này đã xảy ra với Homebrew, vâng, nhưng hiện tại nó đang hoạt động kể từ https://github.com/mxcl/homebrew/commit/0b50110107ea2998e65011ec31ce45931b446dab.

$ brew update 
$ brew rm python3 #if you have installed it before 
$ brew install python3 
$ cd /tmp 
$ which python3 
    /usr/local/bin/python3 
$ python3 -m venv myvenv 
$ source myvenv/bin/activate 
$ wget http://python-distribute.org/distribute_setup.py # may need brew install wget 
$ python3 distribute_setup.py 
    ... 
    Finished processing dependencies for distribute==0.6.45 
    After install bootstrap. 
    Creating /private/tmp/myvenv/lib/python3.3/site-packages/setuptools-0.6c11-py3.3.egg-info 
    Creating /private/tmp/myvenv/lib/python3.3/site-packages/setuptools.pth 

Bạn thấy cài đặt phân phối thành công vào thư mục/tmp.

1

Điều này xảy ra bởi vì homebrew cài đặt cấu hình distutils file:

$ brew cat python3 | grep "Tell distutils" -A5 
    # Tell distutils-based installers where to put scripts 
    (prefix/"Frameworks/Python.framework/Versions/#{VER}/lib/python#{VER}/distutils/distutils.cfg").write <<-EOF.undent 
     [install] 
     install-scripts=#{scripts_folder} 
     install-lib=#{site_packages} 
    EOF 

$ mv ~/.local/Frameworks/Python.framework/Versions/3.3/lib/python3.3/distutils/distutils.cfg ~/tmp/ 
$ cat ~/tmp/distutils.cfg 
[install] 
install-scripts=/Users/gatto/.local/share/python3 
install-lib=/Users/gatto/.local/lib/python3.3/site-packages 
$ . venv/bin/activate 
(venv) $ python distribute-0.6.36/distribute_setup.py 
(venv) $ ls venv/lib/python3.3/site-packages/ 
distribute-0.6.36-py3.3.egg easy-install.pth setuptools-0.6c11-py3.3.egg-info setuptools.pth 

Xem "distutils.cfg Can Break venv" Vấn đề ở bugs.python.org.

+1

Homebrew đã thay đổi distutils.cfg này thành một cách phù hợp tiêu chuẩn hơn và bây giờ chỉ chỉ định tiền tố. https://github.com/mxcl/homebrew/commit/0b50110107ea2998e65011ec31ce45931b446dab –

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