我爲我的python應用程序使用pip和virtualenv。我想升級到應用程序的新版本而不觸及依賴關係。當我使用pip install -U
時,它會嘗試升級所有軟件包,甚至在沒有可用新版本時卸載並重新安裝相同版本的依賴軟件包。使用pip升級軟件包而不升級依賴關係?
我也試過pip install -U --no-deps
,但這似乎相當於一次常規安裝而不是升級。是否有組合的標誌可以做我想要的?
我爲我的python應用程序使用pip和virtualenv。我想升級到應用程序的新版本而不觸及依賴關係。當我使用pip install -U
時,它會嘗試升級所有軟件包,甚至在沒有可用新版本時卸載並重新安裝相同版本的依賴軟件包。使用pip升級軟件包而不升級依賴關係?
我也試過pip install -U --no-deps
,但這似乎相當於一次常規安裝而不是升級。是否有組合的標誌可以做我想要的?
我剛剛嘗試了我的virtualenv項目,pip install -U --no-deps mypackage
似乎工作得很好。它只是下載mypackage,沒有別的。你的設置是什麼樣的?
當你給一個特定的壓縮包和一個包名稱時,我的行爲有所不同。 Carl Meyer提供了一個有用的解釋:http://groups.google.com/group/python-virtualenv/msg/d702c251a6dc40a5 – 2010-06-10 16:28:31
我強烈建議事後運行'pip check'來檢查是否存在缺失依賴關係的問題。 – Flimm 2017-02-14 14:19:28
你說得對。我認爲當我加入--no-deps
時,它忽略了卸載現有版本。但我又試了一下,看看有沒有問題:
$ pip install -U --no-deps myproj
Downloading/unpacking myproj
Downloading myproj-1.0-trunk.31072.tar.gz (43Kb): 43Kb downloaded
Running setup.py egg_info for package myproj
Installing collected packages: myproj
Found existing installation: myproj 1.0-trunk.31053
Uninstalling myproj:
Successfully uninstalled myproj
Running setup.py install for myproj
Successfully installed myproj
Cleaning up...
UPDATE(感謝@益帖的評論):如果你正在使用最新版本的PIP的,然後更新依存關係現在是默認只在必要時行爲,而且你不需要做任何特別的事情!下面的答案概述了舊版pip的步驟(如果您想要便攜,也適用於較新版本)。
如果你真的想不碰的依賴,那麼確實要走的路是
pip install -U --no-deps mypackage
但我認爲你會通常希望是,除非它的要求不升級的依賴。在這種情況下,你可以使用:
pip install --upgrade --upgrade-strategy only-if-needed mypackage
這僅更新的要求,如果包裝需要比安裝新版本。
這是現在在PIP新的默認策略:https://github.com/pypa/pip/pull/4500 – Jether 2017-10-22 14:30:14
LoL,我只是盲目地從答案複製命令,它確實安裝了一些['mypackage'](https ://pypi.python.org/pypi/Mypackage/0.1)放到我的python中。 – ImportanceOfBeingErnest 2018-02-02 15:35:49
很好的問題。我交叉http://stackoverflow.com/questions/2875232/list-python-package-dependencies-without-loading-them - 如果你甚至不能提前列出依賴項,似乎你卡住了。 – denis 2010-05-20 16:17:15