我無法理解pip如何在特定環境中工作。問題是我正在嘗試使用OpenStack安裝部署方法來安裝OpenStack。它提供了劇本以準備完整的環境並安裝所有組件。在應該從私人倉庫安裝python模塊(在之前的部署步驟中構建它)的情況下,部署失敗。這個回購沒有別的作爲nginx服務器通過http協議暴露python輪子目錄。當OpenStack節點爲了安裝軟件包而用pip訪問這個回購站時,他們似乎沒有找到任何滿足約束條件的軟件包(我沒有使用需求文件發佈整個命令,但需要的版本在那裏)。每個節點也同樣期待HOME /./ PIP/pip.conf:使用回購其他pipi與pip
[global]
no-index = true
pre = True
timeout = 120
trusted-host =
172.21.51.152
[install]
upgrade = True
find-links =
http://172.21.51.152:8181/os-releases/14.0.7/
其中172.21.51.152是應該更換的PyPI是回購。
時應安裝軟件包劇本任務運行時都失敗,類似的錯誤:
根@控制1 - 加萊拉容器-434df170:〜#畫中畫安裝MySQL-python的 收集的MySQL-python的 找不到一個滿足要求的版本MySQL-python(從版本:) 沒有找到與MySQL-python匹配的發佈版
即使文件在那裏,我可以從文件所在的URL中獲取它。
ls /var/www/repo/os-releases/14.0.7/ | grep -i mysql_python
mysql_python-1.2.5-cp27-cp27mu-linux_x86_64.whl
我使用tcpdump檢查了使用「pip install」命令時發送的請求pip的發送類型。它發送一個GET獲取到http://172.21.51.152:8181/os-releases/14.0.7/所有輪子文件。服務器與index.html文件回覆:
<html>\r\n
<head><title>Index of /</title></head>\r\n
<body bgcolor="white">\r\n
<h1>Index of /</h1><hr><pre><a href="../">../</a>\r\n
<a href="links/">links/</a>
<a href="openstackgit/">openstackgit/</a>
<a href="os-releases/">os-releases/</a>
<a href="pkg-cache/">pkg-cache/</a>
<a href="pools/">pools/</a>
<a href="venvs/">venvs/</a>
</pre><hr></body>\r\n
</html>\r\n
得到這個答覆後,PIP似乎對結果滿足並決定它需要的軟件包是不存在。我正在試圖弄清楚這是否是預期的行爲,並且該回購存在問題,或者如果使用配置不足而無法執行搜索的pip啓動。
我試圖完全刪除pip.conf,pip正常工作只是從PyPI下載文件。我在這裏錯過了什麼,爲了使它從私人存儲庫工作?
感謝您的幫助!
如果你正在使用'pip'運行到這個問題一直更適合,我見沒有理由將問題標記爲Ansible(或OpenStack)。使用Ansible模塊時有什麼區別嗎? – techraf
從我的觀點來看,將此問題標記爲Ansible也是有意義的,因爲這可能引起熟悉OpenStack項目的人的注意。至少這是我對問題標記目的的理解。 –