2013-04-09 21 views
6

Chuẩn python distutils provides a '--user' option cho phép tôi cài đặt một gói phần mềm như một người dùng hạn chế, như thế này:easy_install hoặc pip với tư cách người dùng bị giới hạn?

python setup.py install --user 

Có tương đương cho easy_installpip?

+0

considre env ảo. nó có thể được duy trì cho mỗi người dùng – karthikr

+0

fyi, 'pip' thích cài đặt lại các phụ thuộc, trong khi' easy_install' sẽ chỉ để lại các phụ thuộc đã được đáp ứng. –

+0

@JonathanVanasco: Nếu bạn đang cố gắng vượt qua câu hỏi này thành một đối số về 'pip' so với' easy_install', điều đó không liên quan đến câu hỏi này; vào [Tại sao sử dụng pip trên easy_install] (http: // stackoverflow.com/questions/3220404/why-use-pip-over-easy-install). – abarnert

Trả lời

6

Đối pip, xem User Installs để biết chi tiết, nhưng về cơ bản, nó chỉ là những gì bạn mong muốn:

pip install --user Foo 

Đó là một chút phức tạp hơn cho easy_install. Như Ned Deily chỉ ra, nếu bạn có thể dựa vào distribute thay vì setuptools và 0,6.11 trở lên, bạn chỉ có thể sử dụng --user giống như pip. Nhưng nếu bạn cần làm việc với setuptools hoặc cũ hơn distribute… xem Custom Installation Locations để biết chi tiết (và lưu ý rằng nó giải thích cách tạo và thiết lập gói trang web người dùng, không chỉ cách cài đặt ở đó, vì nó cần để có thể làm việc với Python 2,5 và trước đó, mà không làm điều này theo mặc định). Nhưng hy vọng, bạn chỉ sử dụng easy_install cho số ít các gói không phải là pip-có thể, do đó, đó không phải là một việc lớn.

Tuy nhiên, ít nhất đáng xem xét liệu virtualenv có phù hợp hơn với bất kỳ điều gì bạn đang cố thực hiện hơn thư mục trang web của người dùng hay không. pipvirtualenv làm việc cùng nhau rất độc đáo, như là the docs giải thích.

+2

'--user' được hỗ trợ trực tiếp trong các phiên bản Phân phối gần đây (0.6.11+) của' easy_install'. –

+0

@NedDeily: Cảm ơn; Tôi không biết điều đó. Phân phối có tài liệu 'easy_install' riêng của nó, tách biệt với tài liệu gốc/setuptools/PEAK không? – abarnert

+0

Có: http://pythonhosted.org/distribute/easy_install.html#using-easy-install BTW, như bạn có thể đã nghe, nó đã được công bố tại PyCon gần đây mà dự án 'setuptools' và' Distribute' dự án đã đồng ý hợp nhất lại thành một dự án và cây nguồn bằng cách sử dụng các tính năng tốt nhất của cả hai, trong tương lai gần, chỉ có một phiên bản 'setuptools' và' easy_install' để tranh luận. –

1

Từ các tài liệu easy_install

http://peak.telecommunity.com/DevCenter/EasyInstall#downloading-and-installing-a-package

-install-dir = DIR, -d DIR Set thư mục cài đặt. Bạn có thể đảm bảo rằng thư mục này nằm trên sys.path khi đang chạy và để sử dụng pkg_resources.require() để bật (các) gói đã cài đặt bạn cần.

(Mới trong 0.4a2) Nếu tùy chọn này không được chỉ định trực tiếp trên dòng dòng hoặc trong tệp cấu hình phân đoạn, các vị trí cài đặt mặc định cài đặt được sử dụng. Thông thường, đây sẽ là thư mục gói trang web , nhưng nếu bạn đang sử dụng cấu hình của các tệp cấu hình , hãy đặt những thứ như tiền tố hoặc install_lib, thì các cài đặt đó được tính đến khi tính toán thư mục cài đặt mặc định , tùy chọn tiền tố.

--prefix = DIR (Mới trong 0,6a10) Sử dụng thư mục được chỉ định làm cơ sở để tính toán thư mục cài đặt và tập lệnh mặc định. Trên Windows, các thư mục mặc định kết quả sẽ là tiền tố \ Lib \ site-packages và tiền tố \ Scripts, trong khi trên các nền tảng khác mặc định sẽ là tiền tố/lib/python2.X/site-packages (với phiên bản thích hợp thay thế) cho thư viện và tiền tố/bin cho tập lệnh.

Lưu ý rằng tùy chọn --prefix chỉ đặt cài đặt mặc định và thư mục tập lệnh và không ghi đè các thư mục được đặt trên dòng hoặc trong tệp cấu hình.

Bạn cũng có thể xác định chúng về việc sử dụng một tập tin ~/.pydistutils.cfg

http://peak.telecommunity.com/DevCenter/EasyInstall#mac-os-x-user-installation

Trước khi cài đặt EasyInstall/setuptools, chỉ cần tạo một ~/file .pydistutils.cfg với các nội dung sau (hoặc thêm video này vào các nội dung hiện có):

[cài đặt] install_lib = ~/Library/Python/$ py_version_short/site-packages install_scripts = ~/bin Điều này sẽ cho các distutils và EasyInstall luôn luôn cài đặt các gói trong thư mục gói trang web cá nhân của bạn và các kịch bản lệnh tới ~/bin. (Lưu ý: không thay thế $ py_version_short bằng phiên bản Python thực tế trong tệp cấu hình! Các distutils sẽ thay thế giá trị chính xác khi chạy, do đó tệp cấu hình ở trên nên hoạt động chính xác cho dù bạn sử dụng phiên bản Python nào trong tương lai .)

Khi bạn đã thực hiện việc này, bạn có thể thực hiện theo hướng dẫn cài đặt bình thường hướng dẫn và sử dụng easy_install mà không cần bất kỳ tùy chọn đặc biệt nào khác hoặc bước.

(Lưu ý, tuy nhiên, ~/bin không nằm trong PATH mặc định, vì vậy, bạn có thể có để tham chiếu đến tập lệnh theo vị trí đầy đủ của chúng.Bạn có thể muốn sửa đổi tập lệnh khởi động shell (có thể .bashrc hoặc. hồ sơ cá nhân) hoặc bạn ~/.MacOSX/environment.plist bao gồm ~/bin trong PATH của bạn.

+1

Đó là tốt nhưng nó không có gì để làm với Distutils '--user' tùy chọn mà OP là yêu cầu về. Cấp, '--user' không được tài liệu hay biết rõ. Xem http://docs.python.org/2/install/index.html#alternate-installation-the-user-scheme Dòng dưới cùng: 'setuptools' hiện không hỗ trợ nó; các phân phối ngã ba nào. –

0

tôi cần phải làm tương tự với Docker tôi và triển khai đến AWS đàn hồi Beanstalk.

vấn đề này là pipeasy_install (được gọi bằng python setup.py) giải thích tham số --user theo cách khác.

  • pip install --user PackageName sẽ cài đặt biến PackageName thành $PYTHONUSERBASE biến môi trường.
  • python setup.py develop --user sẽ bỏ qua $PYTHONUSERBASE biến và luôn cài đặt vào ~/.local/lib/python<python version>/site-packages thư mục

Cách duy nhất tôi tìm thấy cho cả các thư mục này làm việc cùng nhau, là để xóa ~/.local/lib/python<python version>/site-packages và để làm cho liên kết đến bạn $PYTHONUSERBASE

PS: Hãy cẩn thận với dưới đây, bạn có thể cần phải cài đặt lại tất cả các phụ thuộc python địa phương của bạn. Tôi khuyên bạn nên sử dụng nó chỉ trong Docker hoặc bất kỳ môi trường ảo khác

# !!! Be sure you have configured $PYTHONUSERBASE environment variable 
rm -r ~/.local/lib/python2.7/site-packages 
ln -s $PYTHONUSERBASE/lib/python2.7/site-packages ~/.local/lib/python2.7/site-packages 

Bây giờ cả hai pip và python setup.py devel --user sẽ cài đặt cùng thư mục

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