2011-10-05 47 views
11

Câu hỏi ngắn
Sử dụng virtualenv/virtualenvwrapper là nó có thể để thêm một tiền tố để gọi python rằng có liên quan đến một môi trường ảo cụ thể?Chạy không thuộc hệ thống Python với virtualenv trong chế độ 32bit trên OS X

nền
Tôi muốn có nhiều môi trường ảo bằng cách sử dụng brew installed Python 2.7, nhưng một số chạy trong chế độ 64 bit và các chế độ khác 32bit.

Dưới đây tôi có thiết lập điển hình cho sự phát triển OS X của mình. Tiền tố cụ thể mà tôi muốn thêm vào cuộc gọi pythonarch -i386 để buộc python chạy ở chế độ 32 bit. Một lần nữa phần quan trọng nhất của nó là nó sẽ được thêm chỉ sau khi gọi workon env32 (như minh họa ví dụ). Tôi biết tôi có thể thiết lập một bí danh trong .bash_profile của tôi, nhưng điều này sẽ phải được sửa đổi mỗi khi tôi tạo/xóa các môi trường ảo.

EDIT
Để xây dựng thêm về những vấn đề tôi có với việc sử dụng một bí danh đơn giản, có thể có nhiều hơn 1 32bit môi trường ảo. Điều này đang được nói, cuộc gọi đến workon lý tưởng sẽ thêm tiền tố vào cuộc gọi python để luồng công việc tại thiết bị đầu cuối sẽ giống nhau. Ý nghĩa sau khi gọi workon env_x_32 Tôi có thể chỉ sử dụng pythonarch -i386 sẽ rõ ràng đối với tôi khi sử dụng Thiết bị đầu cuối.

Python Cài đặt:

> brew install python --framework --universal 

Tạo môi trường ảo (sau khi cài đặt pip, virtualenv và virtualenvwrapper):

> mkvirtualenv env_1_64 --no-site-packages 
> mkvirtualenv env_1_32 --no-site-packages 

> mkvirtualenv env_2_64 --no-site-packages 
> mkvirtualenv env_2_32 --no-site-packages 

64 bit sử dụng:

> workon env_1_64 
> python myscript.py 

> workon env_2_64 
> python my_other_project_script.py 

32 bit sử dụng: (Current/Non-lý tưởng)

> workon env_1_32 
> arch -i386 python myscript.py 

> workon env_2_32 
> arch -i386 python my_other_project_script.py 

32 bit sử dụng: (lý tưởng)

> workon env_1_32 
> python my_32bit_project.py # Note that the arch -i386 would be transparent 

Giải pháp
Chạy với Sean Nhận xét của:

Tôi đã thêm bí danh bên trong kích hoạt/hủy kích hoạt cho các môi trường tôi muốn chạy dưới dạng 32 bit. Xem bên dưới để biết thêm chi tiết.

env_1_32: kích hoạt script

# This file must be used with "source bin/activate" *from bash* 
# you cannot run it directly 

deactivate() { 
    alias python='python' # <---- Added this line 

    # reset old environment variables 
    if [ -n "$_OLD_VIRTUAL_PATH" ] ; then 
     PATH="$_OLD_VIRTUAL_PATH" 
     export PATH 
     unset _OLD_VIRTUAL_PATH 
    fi 

    # ****** Removed Content to keep the post shorter********* 

} 

# unset irrelavent variables 
deactivate nondestructive 

VIRTUAL_ENV="/Users/Adam/.envs/env_1_32" 
export VIRTUAL_ENV 

# This should detect bash and zsh, which have a hash command that must 
# be called to get it to forget past commands. Without forgetting 
# past commands the $PATH changes we made may not be respected 
if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then 
    hash -r 
fi 

# ****** Removed Content to keep the post shorter********* 

alias python='arch -i386 python' # <---- Added this line to run as 32bit 
+0

Hôm qua câu hỏi này (và câu trả lời) rất hữu ích đối với tôi, cảm ơn! Tuy nhiên, hôm nay tôi lại bị kẹt lại, bởi vì dự án của tôi không có kịch bản 'main.py' cấp cao nhất, thay vào đó, một tập lệnh được tạo bởi setuptools (?) Khi tôi thực hiện 'setup.py install' hoặc 'setup.py phát triển ', bằng cách sử dụng cấu hình' entry_points 'trong setup.py của tôi. Điều này có nghĩa là không có chỗ để tôi chèn bí danh 'vòm' của mình khi nó được triển khai trên máy của người dùng. Tôi có thể hỏi một câu hỏi riêng về điều này. –

Trả lời

6

Thêm một bí danh để kịch bản kích hoạt của bạn, và kích hoạt virtualenv của bạn mỗi loại mà bạn muốn sử dụng nó.

$ cd env32 
$ echo "alias python='arch -i386 python'" >> bin/activate 
$ source bin/activate 
$ python myscript.py 
+0

Tôi luôn đề xuất sử dụng tùy chọn virtualenv --no-site-packages khi tạo virtualenv. –

+0

Nói chung tôi làm. Ví dụ chính xác này tôi đang sử dụng wxPython (được cài đặt cho phiên bản được ủ) nên tôi thực sự cần các gói trang web của nó. –

+0

Xem bản chỉnh sửa của tôi để trả lời câu hỏi của bạn. –

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