如何搭建自己的pypi私有源伺服器

發表於2016-10-12

通常我們使用pip安裝python包,都會預設從 https://pypi.python.org/pypi 上安裝,非常方便。

但是有些是公司內部的專案,不方便放到外網上去,這個時候我們就要搭建自己的內網pypi源伺服器,需要安全並且擁有同樣的舒適體驗。

python官方有個pypi私有源實現的說明:http://wiki.python.org/moin/PyPiImplementations ,並且列出了幾個比較成熟的實現方案:

我選擇pypiserver,因為他最小而且使用簡單。下面是搭建的過程。

安裝和快速上手

改進

我們用supervisor來管理pypi-server。

  • 安裝supervisor

    $ sudo apt-get install supervisor $ ps aux|grep supervisor # 檢視後臺是否已經執行起來了

  • 安裝pypi server

    $ cd /PATH/TO/PRIVATEPYPI $ virtualenv pypienv # 建立一個virtaulenv

    $ source PATH/TO/PRIVATEPYPI/pypienv/bin/activate $ pip install pypiserver #安裝pypi server

    $ mkdir PATH/TO/PRIVATEPYPI/packages # 建立存放packages的資料夾

  • 編寫指令碼/PATH/TO/PRIVATEPYPI/run-pypi.py,作用是在virtualenv中啟動pypiserver。

    #!/bin/sh # 啟動virtualenv . /PATH/TO/PRIVATEPYPI/pypienv/bin/activate # 使用埠號3141,因為pypi與π諧音,π≈3.141 exec pypi-server -p 3141 /PATH/TO/PRIVATEPYPI/packages

  • 在supervisor中配置啟動pypi server

    新建檔案/PATH/TO/PRIVATEPYPI/pypi-server.conf,內容如下:

    [program:pypi-server] directory=/PATH/TO/PRIVATEPYPI/ command=sh run-pypi.sh autostart=true autorestart=true redirect_stderr=true

    將該檔案軟鏈到supervisor的配置資料夾下:

    $ cd /etc/supervisor/conf.d/ $ sudo ln -s /PATH/TO/PRIVATEPYPI/pypi-supervisor.conf pypi-supervisor.conf

  • 重啟supervisor

    $ sudo /etc/init.d/supervisor stop $ sudo /etc/init.d/supervisor start

    這時候在瀏覽器中訪問 http://localhost:3141/ ,就可以看到pypiserver的歡迎頁面了。

  • 上傳package
    • 上傳package需要使用者名稱密碼,密碼檔案使用命令htpasswd生成
    • 修改run-pypi.sh, 啟動pypi server時載入密碼檔案
    • 用前面的方法重新啟動supervisor。
    • 在使用者的主目錄下新建檔案.pypirc(也可以在/PATH/TO/PRIVATEPYPI/下新建,通過軟鏈連結到home目錄下,推薦使用),寫入下面的內容:
    • 上傳package檔案:
  • 下載package

    $ pip install -i http://localhost:3134/simple/ some-package

相關文章