pypi本地源的搭建

本文介绍了如何在本地搭建pypimirror服务器,包括安装、配置、使用及整合Apache等步骤,实现离线访问Python包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

原文链接:http://www.lnmpy.com/pypi-mirror/

 

介于Python的跨平台性,所以这里就不描述我本地的环境了

首先安装pypimirror

 
  1. pip install z3c.pypimirror

安装的过程中会会出现BeautifulSoup版本不匹配的报错

 
  1. Downloading/unpacking BeautifulSoup<=3.0.9999 (from z3c.pypimirror)
  2. Could not find a version that satisfies the requirement BeautifulSoup<=3.0.9999 (from z3c.pypimirror) (from versions: 3.2.0, 3.2.1)
  3. Cleaning up...
  4. No distributions matching the version for BeautifulSoup<=3.0.9999 (from z3c.pypimirror)
  5. Storing debug log for failure in /home/topgear/.pip/pip.log

/usr/local/lib/python2.7/dist-packages/z3c.pypimirror-1.0.16-py2.7.egg/EGG-INFO/requires.txt文件修改一下即可. (这里我是ubuntu的,具体的发行版的配置可能会不一样)

其中有一行是: BeautifulSoup<=3.0.9999, 将版本号去掉,即改成:BeautifulSoup. 改完之后再重新执行上面的安装命令即可.

配置pypimirror.cfg文件,保存路径无所谓

 
  1. [DEFAULT]
  2. # 镜像文件的本地存放路径
  3. mirror_file_path = /opt/pypi/
  4.  
  5. # 远程镜像的url
  6. base_url = http://0.0.0.0/pypi
  7.  
  8. # 日志文件
  9. log_filename = /var/log/pypi-mirror.log
  10.  
  11. # 防止重复运行的锁文件
  12. lock_file_name = /tmp/pypi-mirror.lock
  13.  
  14. # days to fetch in past on update
  15. fetch_since_days = 1
  16.  
  17. # 需要进行镜像拷贝的文件类型,不在列表中的则不进行拷贝
  18. filename_matches =
  19. *.zip
  20. *.tgz
  21. *.egg
  22. *.tar.gz
  23. *.tar.bz2
  24.  
  25. # 需要进行镜像拷贝的文件名称,不在列表中的则不进行拷贝
  26. # 默认拷贝全部,上面已经删选了类型
  27. package_matches =
  28. *
  29.  
  30. # 删除本地有而服务器上没有的包
  31. # 默认是True,会进行删除的,此处我调整为False
  32. cleanup = False
  33.  
  34. # 创建索引文件
  35. create_indexes = True
  36.  
  37. # 显示相信信息
  38. verbose = True

执行pypimirror -h 可以看到pypimirror的帮助信息

-I: 初始化镜像

-U: 更新镜像(当已经初始化过了,只需要进行同步的更新)

-i: 为本地文件创建索引

-c: 同时输出到console中

-v: 显示详细信息

 
  1. pypimirror -c -v -I pypimirror.cfg # 第一次需要初始化
  2. pypimirror -c -v -U pypimirror.cfg # 如果已经存在本地镜像了则可以进行更新
 
  1. pypimirror -c -v -i pypimirror.cfg

其实就是简单的执行一个软链接而已

 
  1. ln -sf /opt/pypi /var/www/pypi

使用镜像源很简单,用-i指定就行了:

 
  1. easy_install -i http://127.0.0.1/pypi/ django
  2. pip install -i http://127.0.0.1/pypi/ django

当然实际中你会发现有些源即使你指定了第三方的源(本地源), 它竟然还是从官方的源去下载了, so(= ̄ω ̄=), 改下pip或者easy_install的源码,替换掉代码中hardcode的官方源吧.

  1. 搭建本地pypi服务器
  2. Setting up a PyPI mirror

 

<think>好的,我现在需要帮助用户了解如何搭建私人PyPI服务器。首先,我需要回顾用户提供的引用内容,看看有哪些相关步骤和工具。用户提到了几个引用,其中引用[2]、[3]、[5]直接涉及PyPI服务器的搭建,而其他引用可能提供一些辅助信息。 首先,用户的需求是搭建私人PyPI服务器,所以我要整理出搭建的基本步骤。根据引用[3],安装pypiserver和passlib是必要的,使用pip安装这两个包。然后,引用[5]提到需要处理上传身份验证,使用htpasswd生成密码文件,并配置服务器以启用身份验证。此外,引用[5]还提到了启动服务器时需要指定密码文件和存储目录,端口设置为8080。 接下来,我需要将这些步骤结构化。第一步应该是安装必要的软件,包括pypiserver和passlib。第二步是创建存储包的目录,比如packages。第三步生成密码文件,可能需要安装httpd-tools来使用htpasswd命令,或者使用Python的passlib库。第四步启动服务器,并配置身份验证。第五步是配置客户端使用私有源,可能需要使用pip的--index-url选项或者配置pip.conf文件。 同时,用户可能关心如何上传包到私有服务器。根据引用[5],上传需要身份验证,可以使用twine工具,并在命令中指定用户名、密码和仓库URL。另外,用户可能还需要了解如何让私有服务器开机自启,引用[1]提到了systemctl的启动和启用命令,但需要创建systemd服务文件,这部分可能需要补充步骤,比如创建服务文件并配置。 需要注意的问题包括:权限管理、HTTPS配置(如果需要安全性)、以及客户端的正确配置。引用[5]提到如果只是运行服务器,无法直接上传,必须配置身份验证,这一点很重要,需要强调。另外,引用[4]展示了使用清华镜像源的例子,可能对比说明私有源的配置方法。 在整理过程中,我需要确保每个步骤都清晰,并正确引用来源。例如,安装pypiserver来自引用[3],身份验证部分来自引用[5],上传包的方法同样来自引用[5]。同时,启动服务器和开机自启的步骤可能需要结合引用[1]和引用[5]的信息。 最后,生成相关问题需要考虑用户可能的后续疑问,比如如何保障服务器安全、如何与CI/CD集成、如何管理包版本等。这些问题应该基于搭建步骤中的关键点,如身份验证、上传流程、客户端配置等。</think>### 分步搭建私人PyPI服务器教程 #### 1. 安装核心工具 使用以下命令安装私有PyPI服务器所需组件: ```bash pip install pypiserver passlib ``` 其中: - $pypiserver$ 是核心服务程序[^3] - $passlib$ 用于密码加密验证[^5] #### 2. 创建存储目录 建立软件包存储目录: ```bash mkdir -p ~/packages ``` #### 3. 配置身份验证 生成用户密码文件(二选一): - **方法一**(需安装httpd工具): ```bash sudo yum install httpd-tools # CentOS htpasswd -c ./htpasswd pypiuser ``` - **方法二**(使用Python实现): ```python from passlib.apache import HtpasswdFile ht = HtpasswdFile("./htpasswd") ht.set_password("pypiuser", "your_password") ht.save() ``` #### 4. 启动服务 带身份验证的启动命令: ```bash pypi-server -p 8080 --passwords ./htpasswd ~/packages ``` 参数说明: - $-p 8080$ 指定服务端口 - $--passwords$ 启用密码验证[^5] #### 5. 配置开机自启(可选) 创建systemd服务文件: ```bash # /etc/systemd/system/pypi-server.service [Unit] Description=PyPI Server After=network.target [Service] ExecStart=/usr/local/bin/pypi-server -p 8080 --passwords /path/to/htpasswd /path/to/packages Restart=always [Install] WantedBy=multi-user.target ``` 启用服务: ```bash systemctl start pypi-server systemctl enable pypi-server # 开机自启[^1] ``` #### 6. 客户端配置 安装时指定私有源: ```bash pip install --index-url http://your-server:8080/simple/ your-package ``` 或配置永久源: ```ini # ~/.pip/pip.conf [global] index-url = http://your-server:8080/simple trusted-host = your-server ``` #### 7. 上传软件包 使用twine上传: ```bash twine upload --repository-url http://your-server:8080/ \ -u pypiuser -p your_password *.whl ``` ### 关键特性对比 | 功能 | 私有服务器 | 公共PyPI | |------------|------------------|---------------| | 访问控制 | ✔️ 密码验证[^5] | ❌ 完全开放 | | 存储位置 | ✔️ 本地目录[^3] | ❌ 云端存储 | | 网络依赖 | ❌ 无需外网 | ✔️ 需联网访问 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值