Python進階教程之創建本地PyPI倉庫

初識pypi倉庫

pypi倉庫 是對第三方庫的代碼倉管庫,如有需要可以從倉庫中下載,下載用命令pip install 庫名

pip 命令是需要在cmd命令下運行,不能在python環境下使用

創建本地 PyPI 倉庫

安裝 pypiserver

$ mkdir pypiserver
$ cd pypiserver

$ mkdir ./packages
$ mkdir ./auth

$ pip install passlib
$ cd auth
# 生成 htpass 文件
# 會 prompt 密碼輸入,重復兩遍一樣的 
$ htpasswd -sc .htaccess username

$ cd pypiserver
$ cat ./docker-compose.yml
...
version: "3.3"
services:
    pypiserver:
        image: pypiserver/pypiserver:latest
        volumes:
            - type: bind
              source: ./packages
              target: /data/packages
            - type: bind
              source: ./auth
              target: /data/auth
        command: -P /data/auth/.htaccess -a update,download,list /data/packages
        ports:
            - "8081:8080" 

$ docker-compose -f docker-compose.yml up -d

上傳 Python 安裝包

  1. 可以使用 twine CLI 工具上傳,也可以手動地把安裝包 copy 到 pypiserver/packages 目錄下。
  2. 可以上傳 XXX.tar.gz 源碼包,也可以上傳 XXX.whl 分發包,都可以用於 pip 安裝。

安裝 twine CLI 工具:

$ pip install twine

$ ~/.pypirc
...
[distutils] 
index-servers = 
# 不使用 pypi 公共倉庫。
#  pypi 
  internal 

#[pypi] 
#username:<your_pypi_username> 
#password:<your_pypi_passwd> 

[internal] 
repository: http://your_pipserver:8081 
username: <some_username> 
password: <some_passwd> 

twine upload -r internal {packet_path}

(可選的)從現有的環境中獲取 pip 安裝包清單:

pip freeze bypy > requirement.txt
pip download -d ./python_packages -r requirement.txt
cp ./python_packages/* pypiserver/packages

(可選的)從源碼編譯得到可用於分發的 tar 包和 whl 包:

pip install wheel
pip install -U setuptools
python setup.py sdist bdist_wheel
twine upload -r internal ./dist/yourpackage-0.0.1.tar.gz

使用私有 PyPI 倉庫

隱式使用:

$ ~/.pip/pip.conf

[global]
index-url = http://youruser:yourpass@yourserver:8081/simple
[install]
trusted-host=yourserver

顯式使用:

$ pip install --trusted-host yourserver \
    --extra-index-url http://youruser:yourpass@yourserver:8081/simple \
    yourpackage 

總結

到此這篇關於Python進階教程之創建本地PyPI倉庫的文章就介紹到這瞭,更多相關Python創建本地PyPI倉庫內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: