编辑
2025-04-22
Linux
00
请注意,本文编写于 102 天前,最后修改于 33 天前,其中某些信息可能已经过时。

目录

背景
操作
使用

背景

pip内部库需要内部圈子自行使用,需要搭建内部库

操作

sh
mkdir /var/docker/pypi cd /var/docker /pypi mkdir -p auth //认证文件存放目录 mkdir -p packages //pypi安装包存放目录 # 注意当前目录为/var/docker/ pip install htpasswd htpasswd -sc htpasswd.txt <username> cp ./htpasswd.txt ./auth

docker-compose.yml启动

yml
version: "3" services: pypiserver: image: pypiserver/pypiserver:latest restart: always volumes: - type: bind source: /var/docker/pypi/packages target: /data/packages - type: bind source: /var/docker/pypi/auth target: /data/auth command: -P /data/auth/htpasswd.txt -a update,download,list /data/packages ports: - "8888:8080"

启动后:

sh
(myenv) root@abc:/var/docker# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5be7a28e3637 pypiserver/pypiserver:latest "/entrypoint.sh -P /…" 55 seconds ago Up 54 seconds 0.0.0.0:8888->8080/tcp, :::8888->8080/tcp docker_pypiserver_1

访问(阿里云安全组得开放对应端口):http://www.lixf6.com:8888/simple/http://www.lixf6.com:8888

出现:(说明搭建成功)

sh
Welcome to pypiserver! This is a PyPI compatible package index serving 0 packages. To use this server with pip, run the following command: pip install --index-url http://www.lixf6.com:8888/simple/ PACKAGE [PACKAGE2...] To use this server with easy_install, run the following command: easy_install --index-url http://www.lixf6.com:8888/simple/ PACKAGE [PACKAGE2...] The complete list of all packages can be found here or via the simple index. This instance is running version 1.4.2 of the pypiserver software.

使用

1、项目sdk化 项目目录:

plaintext
my_package/ ├── my_package/ │ ├── __init__.py │ ├── module1.py │ └── module2.py ├── setup.py └── README.md

2、增加setup.py文件设置

python
from setuptools import setup, find_packages setup( name='my_package', version='0.1', packages=find_packages(), install_requires=[ # 列出依赖的包 ], author='Your Name', author_email='your.email@example.com', description='A brief description of the package', long_description=open('README.md').read(), long_description_content_type='text/markdown', url='https://github.com/yourusername/my_package', classifiers=[ 'Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent', ], python_requires='>=3.6', )

3、MANIFEST.in文件设置(可不用)

4、打包、本地安装测试并推送到服务中

sh
# pip install twine # python setup.py check # 构建包 python setup.py sdist bdist_wheel # 安装包,pip list验证是否正常安装 pip install . # twine upload --repository-url http://www.lixf6.com:8888 dist/* //把dist内的打包文件推到服务器,需要输入账号密码

5、从pypi下载并安装

sh
pip install --trusted-host www.lixf6.com:8888 --extra-index-url http://lixf6:密码@www.lixf6.com:8888 core==0.1.23 注意: 没有给服务器配置 https 的情况下,需要 --trusted-host 参数,否则 pip 会 ignore 这个仓库 如果你没有设置 Auth 的话,url 中就不需要 youruser:yourpass@ 这部分了; 如果你的 package 奇葩地和公共库中的某个包(和我们一样)重名了,你应该用 --index-url 来代替 --extra-index-url,这样它就会优先找你的包了。

本文作者:lixf6

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!