2017-02-17 371 views
1

我試圖在沒有管理權限的服務器上安裝scikit-image。 Scikit-image需要Cython> = 0.23作爲依賴項,但服務器已在全局安裝了Cython 0.21。Pip使用本地安裝的依賴關係安裝scikit-image

$ which Cython 
/opt/apps/software/MPI/GCC/4.8.3/OpenMPI/1.8.8/Python/2.7.9/bin/cython 

$ cython --version 
Cython version 0.21.2 

我可以安裝用Cython 0.25.2本地轉化爲自己的項目中將該.pip文件夾(以下建議here):

$ pip install Cython -t .pip 
$ python ./.pip/cython.py --version 
Cython version 0.25.2 

我添加./.pip我PYTHONPATH的開始,但當我嘗試安裝scikit像我得到

$ pip install --user scikit-image 
... 
RuntimeError: Cython >= 0.23 needed to build scikit-image 

我怎麼能告訴畫中畫安裝使用用Cython的坐在版本210?

+0

當我使用'pip install --user --upgrade Cython'將Cython安裝到我的$ HOME目錄中時,我也會遇到同樣的問題 – alexpghayes

+0

您是否嘗試過使用pip install --user cython? –

+0

我做了,只是意識到我需要在我的PATH中添加'〜/ .local/bin'。我現在可以運行'cython --version'並獲得'Cython 0.25.2',但用戶安裝scikit-image仍然不高興,並且給我相同的版本錯誤。 – alexpghayes

回答

1

事實證明,集羣模塊管理系統正在將Python的老版本Cython添加到Python的sys.path中,其優先級高於我可以添加到我的PYTHONPATH中的任何東西。當我卸載了我一直在使用的Python模塊時,羣集上的默認版本是2.7.5,它沒有pip,所以當模塊卸載時我不能安裝scikit-image作爲用戶(另外,沒有模塊一些依賴關係丟失)。

解決方案是使用virtualenv創建一個環境並在該環境中安裝我的包。要運行我的代碼,我現在使用/path/to/virtualenv/python my_file

好吧,我現在知道更多關於集羣模塊系統和Python路徑的知識。手指越過這個答案最終對其他人有用。有關Python尋找依賴關係的有趣討論是here