天天看點

快速搭建私有pip鏡像源1. 快速體驗2. 進階

1. 快速體驗

import os
import sys
import pathlib


def main(host='0.0.0.0', port=9000, package_path='./packages', fallback_url="https://pypi.doubanio.com/simple"):
    os.makedirs(package_path, exist_ok=True)
    python = pathlib.Path(sys.executable).absolute()
    pypi_server1 = python.parent / 'pypi-server.exe'
    pypi_server2 = python.parent / 'Scripts/pypi-server.exe'

    os.system(f"{python.__str__()} -m pip install pypiserver -i {fallback_url}")
    pypi_server = pypi_server1 if pypi_server1.exists() else pypi_server2
    cmd = f"{pypi_server.__str__()} -p {port} {package_path} --fallback-url {fallback_url}"
    
    print(cmd)
    print(f"please visit http://{host}:{port}/packages/ to view packages!")
    os.system(cmd)


if __name__ == '__main__':
    main()

           

1.1 安裝和啟動

pip install pypiserver
mkdir ~/packages 
cd ~/packages  
pip download faker  # 手動下載下傳包
pypi-server  # pypiserver預設包存放路徑是 ~/packages , 預設端口号是8080
           
  • 看到下面列印表示啟動成功:
    快速搭建私有pip鏡像源1. 快速體驗2. 進階
  • 打開浏覽器通路http://127.0.0.1:8080/
    快速搭建私有pip鏡像源1. 快速體驗2. 進階
  • 點選hear,即可看到剛下載下傳的faker包
    快速搭建私有pip鏡像源1. 快速體驗2. 進階
  • 使用pip搜尋,注意大小寫
pip search -i http://localhost:8080  Faker
           
快速搭建私有pip鏡像源1. 快速體驗2. 進階
  • 使用pip安裝
pip install -i http://127.0.0.1:8080/simple faker  # 本機
pip install -i http://192.168.0.235:8080 --trusted-host 192.168.0.235 faker # 非本機必須加----trusted-host 192.168.0.235,否則将安裝失敗
           

2. 進階

2.1 指定監聽端口

預設情況下 pypiserver 監聽8080端口, 我們可以通過-p參數來指定期望的端口:

pypi-server -p 9090  # 修改預設8080端口
pypi-server -P ./packages  # 修改預設路徑
pypi-server --fallback-url https://pypi.doubanio.com/simple  # 添加備用源,本地源找不到去備用源下載下傳
           

2.2 打包和上傳

  • 使用setuptools 打包
from setuptools import setup
setup(
    name='demo',
    version='1.0.0',
    packages=['demo']
)
           

在項目根目錄下執行以下指令來生成Python代碼分發包:

python setup.py sdist
cp ./dist/demo-0.0.1.tar.gz ~/packages/demo-0.0.1.tar.gz  # 将壓縮包複制到pypi-server路徑下
           

2.3 使用密碼保護PyPI源

當希望使用密碼來控制Python包的上傳操作的時候, 需要使用Apache htpasswd 檔案。

  1. 首次使用生成密碼
apt-get install -y apache2-utils  
htpasswd -c ~/.pypipasswd zs # 使用apache2-utils工具包生成htpasswd檔案,zs是使用者名,回車提示輸入密碼
pip install passlib  # 使用passlib讀取htpasswd檔案
           
  1. 追加新的使用者名和密碼
  1. 使用密碼檔案來控制上傳

預設隻有上傳操作需要密碼驗證, 如果希望其他操作也需要密碼驗證, 可以添加參數

-a .

,指定某個操作需要密碼

-P foo/htpasswd.txt -a update,download

-P . -a .

表示不設定上傳和下載下傳的密碼