架設一個私有PyPI去裝自己python套件

這幾天自己寫了一個公司內部用的python library
想要找個方便部署的方式,如果能用pip去安裝就最理想了

想使用pip安裝自己的python library需要寫個setup.py然後發佈到PyPI
但是又不能公開到外面的PyPI
後來找了一下安裝私有PyPI的方式這裡記錄一下用法

懶人安裝方法如下

# 建立library存放目錄
$ mkdir -p /data/pypi/packages
$ cd /data/pypi
  
# 安裝 pypiserver
$ pip install pip --upgrade
$ pip install pypiserver
$ pip install passlib
 

# 啟動沒驗證的pypi-server
# $ pypi-server -p 9001 /data/pypi/packages &

# 啟動需要驗證的pypi-server

# create .htpasswd
$ htpasswd -b -m -c .htpasswd terrence mypasswd
$ pypi-server -p 9001 -P /data/pypi/.htpasswd /data/pypi/packages &

這樣就可以有個簡易版的PyPI
但是這個裝法弄起來的PyPI似乎不太穩定 之前遇過他死機幾次
不過當下來講也夠用了

安裝完了PyPI接下來介紹怎麼用

假設這個私有PyPI裝在myhost上

  • 使用pip安裝
$ pip install --extra-index-url http://myhost:9001/ PACKAGE

如果遇到連線安全問題可以加個trusted-host設定

$ pip install --extra-index-ur http://myhost:9001/ --trusted-host myhost PACKAGE
  • 使用easy_install安裝
easy_install -i http://myhost:9001/simple/ PACKAGE
  • 上傳自己的library

如果想上傳自己的library的話,先寫好setup.py
setup.py怎麼寫可以上github找別人的範例參考

然後修改~/.pypirc

[distutils]
index-servers =
  pypi
  local
 
[pypi]
username:
password:
 
[local]
repository: http://myhost:9001
username: terrence
password: mypasswd

然後用下面的指令上傳

$ python setup.py sdist upload -r local

如此一來就可以把自己的library上傳到PyPI了

comments powered by Disqus