2015-10-30 32 views
4

我正在尋找使用PIP或類同安裝Python包的列表,自定義目標目錄(ex./mypath/python/pkgs/)的方法,但也排除/黑名單特定依賴關係。皮普安裝到自定義的目標目錄,而排除特定的相關

我想,因爲他們已經從不同的安裝路徑滿足排除特定的依賴關係(例如蟒蛇安裝)。我沒有權限將軟件包添加到默認的python安裝(我也不想)。

我目前使用pip的-r和-t選項。但是還沒有找到排除特定軟件包的方法。

像這樣的點子命令將是理想的:

pip install --log pip.log -r req.txt -t /mypath/pypkgs/ --exclude exclude.txt 

--no-deps是不是一種選擇,因爲我需要一些依賴關係。

目前,我正在追求一個python腳本做PIP安裝包括依賴我不需要通過:

pip install --log pip.log -r req.txt -t /mypath/python/pkgs/ 

,然後(自動),刪除不需要的依賴畫中畫安裝完成後。

我希望PIP命令的某些組合能達到什麼我正在尋找一些簡單了。我正在使用點7.1.2。謝謝!

類似,但我不會升級,並希望指定目標路徑:

pip: upgrade package without upgrading particular dependency

+0

所以你想用'pip'來安裝一個解釋器,而不是你用來運行它的解釋器? – jonrsharpe

+0

我不知道我回答你的問題@jonrsharpe:當我使用-p [targetdir]的默認安裝(anaconda)中的pip時,它似乎忽略了我已經存在的事實(例如,它會安裝numpy再次成爲[targetdir])。我想在我的目標目錄中添加額外的軟件包,而沒有我的默認安裝/解釋器的重複依賴項。我打算將自定義路徑添加到我的PYTHONPATH。 –

回答

2

我認爲這基本上可以分幾個步驟來實現,假設你使用的virtualenv或類似.. 。

  • 如果你先做一個正常的pip freeze > requirements.txt你會得到傳遞依賴的所有(例如,不排除任何東西。)

  • 現在編輯requirements.txt,刪除要排除包...

  • 最後,在一個新的環境做pip install -r requirements.txt -t ... --no-deps。 Voila:你已經安裝了你想要的依賴項,但排除了特定的依賴項。

+0

是否有可能與其他用戶分享virtualenv?我的用例涉及將同事指向他們可以追加到他們的PYTHONPATH環境變量的路徑,我們就完成了。目標是我們可以共享的標準/默認python環境(包含自定義和第三方模塊)。這個自定義路徑將建立在vanilla anaconda安裝上。 (操作系統:Linux)。 –

+0

你的意思是像預裝二進制文件的網絡共享?這聽起來像一個壞主意,但我認爲只要每個人都有相同的路徑,它就會工作。做'pip安裝'有什麼問題? –

+0

對。我們希望使用共享網絡路徑,這樣我們就可以在團隊中共享標準環境 - 除了anaconda之外。 我們處在防火牆環境中 - 所以'pip install'不是一個選項(我們將在防火牆外使用pip,然後將防火牆內的環境傳輸,以便我們都可以共享。可能有不同的環境)。 回到原來的問題,由於anaconda我們想避免重複的依賴(numpy),但'pip -t/path /'不考慮當前環境。 –

1

面臨着類似的問題,並使用運行bash shell的,我設法排除特定的軟件包與

pip install $(cat requirements.txt | grep -ivE "pkg1|pkg2|pkg3") 

其中pkg1等都是包排除名稱。