[英]easy_install or pip as a limited user?
標准的python distutils提供了一個'--user'選項 ,允許我以有限的用戶身份安裝包,如下所示:
python setup.py install --user
是否有easy_install和pip的等價物?
有關pip
,請參閱用戶安裝以獲取詳細信息,但基本上,這正是您所期望的:
pip install --user Foo
這對easy_install
有點棘手。 正如Ned Deily指出的那樣,如果你可以依賴distribute
而不是setuptools
,以及0.6.11或更高版本,你可以使用--user
和pip
。 但是,如果您需要使用setuptools
或較舊的distribute
...請參閱自定義安裝位置以獲取詳細信息(並注意它解釋了如何創建和設置用戶站點包,而不僅僅是如何在那里安裝,因為它需要能夠工作使用Python 2.5及更早版本,默認情況下不執行此操作)。 但我們希望,你只使用easy_install
為未包裝的少數pip
-able,所以這不是什么大不了的事。
但是,至少值得考慮virtualenv
是否比用戶站點目錄更適合您要完成的任何事情。 正如文檔所解釋的那樣, pip
和virtualenv
很好地協同工作。
來自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。
問題是pip和easy_install (由python setup.py調用)以不同的方式解釋--user
參數。
pip install --user PackageName
將pip 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.