簡體   English   中英

easy_install或pip作為受限用戶?

[英]easy_install or pip as a limited user?

標准的python distutils提供了一個'--user'選項 ,允許我以有限的用戶身份安裝包,如下所示:

python setup.py install --user

是否有easy_installpip的等價物?

有關pip ,請參閱用戶安裝以獲取詳細信息,但基本上,這正是您所期望的:

pip install --user Foo

這對easy_install有點棘手。 正如Ned Deily指出的那樣,如果你可以依賴distribute而不是setuptools ,以及0.6.11或更高版本,你可以使用--userpip 但是,如果您需要使用setuptools或較舊的distribute ...請參閱自定義安裝位置以獲取詳細信息(並注意它解釋了如何創建和設置用戶站點包,而不僅僅是如何在那里安裝,因為它需要能夠工作使用Python 2.5及更早版本,默認情況下不執行此操作)。 但我們希望,你只使用easy_install為未包裝的少數pip -able,所以這不是什么大不了的事。

但是,至少值得考慮virtualenv是否比用戶站點目錄更適合您要完成的任何事情。 正如文檔所解釋的那樣 pipvirtualenv很好地協同工作。

來自easy_install文檔

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

--install-dir = DIR,-d DIR設置安裝目錄。 您可以確保此目錄在運行時位於sys.path上,並使用pkg_resources.require()來啟用所需的已安裝軟件包。

(0.4a2中的新增內容)如果未在命令行或distutils配置文件中直接指定此選項,則使用distutils默認安裝位置。 通常,這將是site-packages目錄,但是如果您使用distutils配置文件,設置諸如prefix或install_lib之類的東西,那么在計算默認安裝目錄時會考慮這些設置,就像--prefix選項一樣。

--prefix = DIR(0.6a10中的新增內容)使用指定的目錄作為計算默認安裝和腳本目錄的基礎。 在Windows上,生成的默認目錄將是前綴\\ Lib \\ site-packages和前綴\\ Scripts,而在其他平台上,默認目錄將是前綴/ lib / python2.X / site-packages(替換了相應的版本),用於庫和腳本的前綴/ bin。

請注意, - prefix選項僅設置默認安裝和腳本目錄,並且不會覆蓋在命令行或配置文件中設置的目錄。

您也可以使用〜/ .pydistutils.cfg文件指定它們

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

在安裝EasyInstall / setuptools之前,只需創建一個包含以下內容的〜/ .pydistutils.cfg文件(或將其添加到現有內容):

[install] install_lib =〜/ Library / Python / $ py_version_short / site-packages install_scripts =〜/ bin這將告訴distutils和EasyInstall始終在個人site-packages目錄中安裝軟件包,並將腳本安裝到〜/ bin。 (注意:不要將$ py_version_short替換為配置文件中的實際Python版本!distutils將在運行時替換正確的值,以便上述配置文件無論您現在還是將來使用的Python版本都能正常工作。)

完成此操作后,您可以按照正常的安裝說明操作,並使用easy_install,而無需任何其他特殊選項或步驟。

(但請注意,〜/ bin不在默認路徑中,因此您可能必須按其完整位置引用腳本。您可能需要修改shell啟動腳本(可能是.bashrc或.profile)或者〜/ .MacOSX / environment.plist在您的PATH中包含〜/ bin。

我需要對我的docker做同樣的事情並部署到AWS Elastic Beanstalk。

問題是pipeasy_install (由python setup.py調用)以不同的方式解釋--user參數。

  • pip install --user PackageNamepip install --user PackageName安裝到$PYTHONUSERBASE環境變量。
  • python setup.py develop --user將忽略$PYTHONUSERBASE變量並始終安裝到~/.local/lib/python<python version>/site-packages文件夾

我發現這兩個文件夾一起工作的唯一方法就是刪除~/.local/lib/python<python version>/site-packages並鏈接到你的$PYTHONUSERBASE

PS:小心下面,你可能需要重新安裝所有本地python依賴項。 我建議僅在docker或任何其他虛擬環境中使用它

# !!! 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

現在pip和python setup.py devel --user都將安裝到同一個文件夾中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM