2012-02-29 35 views
9

Tôi có một virtualenv Python (được tạo bằng virtualenvwerapper) trong một tài khoản người dùng. Tôi muốn sử dụng nó từ một tài khoản người dùng khác trên cùng một máy chủ.Chia sẻ môi trường ảo virtualenv

Tôi làm cách nào để thực hiện việc này? Làm cách nào để tôi có thể thiết lập môi trường ảo để có sẵn cho bất kỳ người dùng nào trên máy chủ lưu trữ? (Chủ yếu là Linux/Debian mà cả Mac OSX.)

Cảm ơn.

Trả lời

5

Đặt nó vào thư mục trung lập với người dùng và làm cho nó có thể đọc được theo nhóm.

Ví dụ: đối với thư viện, tôi sử dụng /srv/http/share/ để chia sẻ mã trên các ứng dụng web.

Bạn có thể sử dụng /usr/local/share/ cho các ứng dụng thông thường.

+0

Nhưng cú pháp virtualenv/virtualenvwrapper để sử dụng thư mục đó là gì? Với virtualenvwrapper, dòng lệnh << workon some_env >> tìm kiếm môi trường trong thư mục .virtualenv của người dùng. – chernevik

+0

Wh bạn có ý gì không? Bạn sử dụng '. bin/activate' như bình thường. – Flavius

+0

Tôi xin lỗi, tôi không làm theo. Khi tôi chuyển sang môi trường, dòng lệnh của tôi là << workon some_env >> - Tôi không chạm vào bin/activate. – chernevik

4

Tôi phải làm việc này cho bạn cùng làm việc. @Flavius ​​answer hoạt động tốt khi tôi thêm một vài lệnh để xử lý virtualenvwrapper. Bạn cần phải đặt venvs của bạn và thư mục dự án WORKON của bạn một số nơi bạn và sếp/bạn của bạn có thể tìm và sử dụng.

sudo mkdir -p /usr/local/share 
sudo mv ~/.virtualenvs /usr/local/share 
sudo mkdir -p /usr/src/venv/ 

Giả sử bạn muốn tất cả mọi người trên máy tính để có thể cả mkprojectworkon:

chmod a+rwx /usr/local/share/.virtualenvs 
chmod a+rwx /usr/src/venv 

Nếu không chownchmod để phù hợp với yêu cầu bảo mật của bạn.

Nếu bạn có bất kỳ móc hoặc kịch bản mong đợi ~/.virtualenvs để được ở vị trí bình thường, bạn tốt hơn symlink nó (trên cả hai tài khoản người dùng của bạn và bạn bè của bạn)

ln -s /usr/local/share/.virtualenvs ~/.virtualenvs 

Sau đó sửa đổi của bạn (và bạn bè của bạn là) .bashrc tệp để cho virtualenvwrapper biết nơi bạn di chuyển mọi thứ. bashrc của bạn nên có một cái gì đó như thế này:

export PROJECT_HOME="/usr/src/venv/" 
export WORKON_HOME="/usr/local/share/.virtualenvs" 

export USR_BIN=$(dirname $(which virtualenv)) 
if [ -f $USR_BIN/virtualenvwrapper.sh ]; then 
    source $USR_BIN/virtualenvwrapper.sh 
else 
    if [ -f /usr/bin/virtualenvwrapper.sh ]; then 
     source /usr/bin/local/virtualenvwrapper.sh 
    else 
     echo "Can't find a virtualenv wrapper installation" 
    fi 
fi 

Khi bạn đăng xuất và trở lại trong (hoặc chỉ cần source ~/.bashrc bạn sẽ được tốt để đi với lệnh như mkproject awesome_new_python_projectworkon awesome_new_python_project

Như một phần thưởng, thêm móc để. tải thư mục dự án ở mức cao nhất mỗi khi workon.

+0

Tôi dường như không làm cho nó hoạt động (không thể tìm thấy mô-đun khi thiết lập như bạn đã đề xuất) - vai trò của 'mkdir -p/usr/src/venv' - đó là thư mục được sử dụng cho bất cứ điều gì? – pepe

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