pypiserver 是一个最基本的PyPI服务器实现, 可以用来上传和维护Python包. 本文介绍 pypiserver 在Ubuntu上的基本安装, 配置和使用.

1. 基本安装和使用

1.1 安装和启动

pypiserver 可以在Python 2或者Python 3下运行. 使用pip就可以安装:

pip install pypiserver

启动 pypiserver 使用以下命令:

pypi-server

在没有显示指定任何启动参数的时候, pypiserver 是使用 ~/packages 来保存Python包, 同时监听8080端口来提供PyPI服务.

1.2 上传Python包

此时, 在创建 ~/packages 目录后, 可以将Python包上传到此目录下. 比如, 有一个Python项目叫 demo , 它的 setup.py 文件内容如下:

from setuptools import setup

setup(

name='demo',

version='0.0.1',

packages=['demo']

)

在项目根目录下执行以下命令来生成Python代码分发包:

python setup.py sdist

执行完上面这条命令后, 可以在项目下的 dist 目录找到分发包 demo-0.0.1.tar.gz. 将分发包上传到 ~/packages 目录下, 接下来就可以访问 pypiserver 上的Python包了.

1.3 安装 pypiserver 上的Python包

在安装和启动 pypiserver 后, 可以通过浏览器访问http://localhost:8080可以访问 pypiserver 的默认欢迎页:

访问http://localhost:8080/simple/demo则可以看到刚上传的_demo-0.0.1.tar.gz_包

1.3.1 pip

在本地环境中, 可以使用 pip 的 index-url 参数来访问 pypiserver 上的Python包:

# pip search -i http://localhost:8080 demo

# pip install -i http://localhost:8080 demo

1.3.2 easy_install

同样也可以使用 easy_install 来访问 pypiserver :

# easy_install -i http://localhost:8080/simple demo

2. 远程上传项目包

如果希望通过python setup.py upload命令将本地项目代码上传到PyPI服务器, 可以通过以下步骤来完成.

2.1 无密码上传项目包

默认情况下, pypiserver 的上传操作是密码保护的, 不过可以通过以下启动参数来关闭密码保护:

pypi-server -P . -a .

上述命令中的-P参数用来指定密码文件, -a用来指定需要密码保护的操作. 当这两个参数同时指定为.时, 表示所有的操作都不需要密码保护.

此时, 就可以在Python项目的根目录下, 执行远程安装命令来上传包. 比如在本地项目中, 执行以下命令:

python setup.py sdist upload -r http://localhost:8080

此时, upload 命令仍然会提示输入密码, 此时直接回车确认就可以了.

2.2 使用密码保护PyPI源

当希望使用密码来控制Python包的上传操作的时候, 需要使用Apache htpasswd 文件.

pypiserver 需要 passlib 包来读取 htpasswd 文件. 使用以下命令来安装 passlib :

pip install passlib

要生成 htpasswd 文件, 需要安装 apache2-utils 工具包. 在Ubuntu上使用以下命令安装:

apt-get install -y apache2-utils

接下来就可以用 htpasswd 命令来生成密码文件. 假设密码文件路径为 /root/.pypipasswd , 第一次生成密码文件的命令如下:

htpasswd -c /root/.pypipasswd sam

上述命令中的最后一个参数sam是用户名, 执行命令后, 会提示输入密码.

当需要在已有的密码文件中添加新的用户名和密码时, 不能再使用-c参数, 否则会将已有的数据覆盖. 比如, 要在上一步生成的文件里添加一个新用户名 john :

htpasswd /root/.pypipasswd john

接下来就可以使用密码文件来控制上传操作了. 当启动 pypiserver 时, 通过-P参数来指定所要使用的密码文件. 默认情况下, 上传操作会需要密码验证, 如果希望其他操作也需要密码验证, 可以使用-a参数. 具体-a参数的使用可以查阅_pypiserver_的启动命令帮助, 这里不再展开.

pypi-server -P /root/.pypipasswd

接下来, 在需要上传Python包的系统中, 需要配置Distutils来指定上传操作所需要的用户名和密码.

创建或者修改 ~/.pypirc 文件, 文件需要以下内容:

[distutils]

index-servers = localhost

[localhost]

repository: http://localhost:8080

username: sam

password: 123456

配置中的[localhost] section就是 pypiserver 的地址和用户名密码信息. index-servers值中的localhost就指定了名为localhost的section. 接下来, 当我们向名为 localhost 或者地址为 http://localhost:8080 的PyPI源上传Python包时, 用户名 sam 和密码 123456 就会被用来验证操作权限:

python setup.py sdist upload -r localhost

3. 其他配置

3.1 指定监听端口

默认情况下 pypiserver 监听8080端口, 我们可以通过-p参数来指定期望的端口:

pypi-server -p 9090

3.2 指定包目录

默认情况下 pypiserver 使用_~/packages_ 目录来读取和保存Python包. 我们可以使用-P参数来修改:

pypi-server -P /opt/pypiserver/packages

3.3 请求转发

当请求的Python包, 在本地 pypiserver 上没有找到时, 它会将请求转发到外部PyPI源, 默认为 https://pypi.doubanio.com/simple . 对于国内使用来说, 可以通过 --fallback-url 参数将转发目的地址设置为豆瓣源:

pypi-server --fallback-url https://pypi.doubanio.com/simple

linux环境搭建pypi源,使用pypi-server搭建简单的PyPI源相关推荐

  1. Linux 环境下配置远程jupyter notebook server

    XShell配置Linux服务器jupyter notebook 参考: https://www.aisun.org/2018/08/linux+jupyter/ https://jupyter-no ...

  2. linux mpp集群环境,Linux环境下,DM8-MPP两节点集群搭建

    目录 1.主备库,监视器信息部署 2.初始化数据库实例 3.启停数据库 4.数据库备份与还原 5.检查.修改和创建配置文件 6.启动数据库,修改数据库模式和OGUID 8.配置守护进程 9.配置监视器 ...

  3. linux环境下rocketMq双master集群搭建

    为什么要使用集群 在生产环境中,经常会有意外的情况发生,对于rocketmq也不例外,单节点情况下,如果出现网络闪断,服务器掉电或宕机之类的,如果服务器不能及时恢复,很可能造成丢消息的情况,因此,集群 ...

  4. filazilla搭建ftp_Windows7下利用FileZilla Server搭建ftp

    1.需求分析 为了提高效率,更好地完成期末网站作业,搭建ftp,实现组内资源共享. 2.所需软件 FileZilla Client   网址:http://filezilla-project.org/ ...

  5. c语言Linux用线程创建文件,Linux环境下C语言线程创建---简单代码

    在Linux环境下用C语言编写线程创建. //file name: pthreadtext.c #include #include //线程头文件 //pthread不是linux下的默认的库,也就是 ...

  6. linux下的python安装,linux环境下的python安装过程

    一.下载python源码包 打开ubuntu下的shell终端,通过wget命令下载python源码包,如下图所示: wget https://www.python.org/ftp/python/3. ...

  7. Linux环境中Visual Studio Code 安装配置及其卸载(详细教程)

    两篇相关博文: 在VMware15中创建虚拟机安装ubuntu系统(超详细教程) Linux环境编译运行C/C++语言程序----配置gcc.g++(详细教程) 此篇分享我在linux环境下安装VS ...

  8. ffmpeg编译gb28181_RTSP/GB28181协议/海康SDK/Ehome协议视频上云网关EasyCVR视频平台在linux环境下ffmpeg源码单步调试环境搭建...

    目前TSINGSEE青犀视频研发的视频上云服务平台EasyCVR已经可集成海康EHome私有协议,并且在前文中我也跟大家讲过EHome协议的配置和调用流程,有兴趣的可以阅读一下:配置及协议介绍.Eho ...

  9. PVE 天龙八部TLBB服务端搭建(一)--linux环境搭建

    1.安装ubuntu,这里我用的ubuntu的10.04 32位版本,下载地址 http://old-releases.ubuntu.com/releases/10.04.0/ubuntu-10.04 ...

  10. (三)Linux环境部署(Centos+Nginx+Tomcat+Mysql) - Nginx环境搭建

    因为在网上发现系统性.严谨(特别是在安全方面)的Linux部署方面的参考文章很少,于是整理以下六篇Linux环境部署的系列性文章,其为本人在实践中,完整的搭建一个基于Linux系统上Centos+Ng ...

最新文章

  1. 查看已安装tensorflow版本
  2. python的类属性和方法_Python中类属性、实例属性和实例方法的区别
  3. [docker] 04 使用docker容器
  4. [NOI2011]阿狸的打字机
  5. ssl1213-多边形面积【差积,计算几何】
  6. 前端实现炫酷动效_20个网页动效设计的炫酷神器
  7. CSDN改版,找不到各种入口,链接放下面
  8. Python图片攻击
  9. 机器学习最常用的损失函数之交叉熵
  10. Android四大组件之Activity组件
  11. C语言视频教程-谭浩强版-小甲鱼主讲—P2
  12. R语言超星学习通习题
  13. java的学习--第一章 java基础入门
  14. SpringSecurity实战(二)-基于数据库认证授权
  15. 用防火墙自动拦截攻击IP
  16. 如何注销/删除MSN帐号(Windows Live ID)
  17. 炫龙银魂t1配置_高配好用不贵炫龙银魂T1让你体验到真正性价比
  18. 不想结婚要小孩了!怎么破?
  19. SWR 与前端数据依赖请求
  20. 微信公众平台开发(二) 微信公众平台示例代码分析

热门文章

  1. 超详解读:垃圾回收机制 | 原力计划
  2. 从 0 到 70%:Chrome 上位揭秘!
  3. 面试妥了!2020 爬虫面试题目合集
  4. 太难了!用Python数据造假后,我被公司升职加薪了~
  5. 英特尔“宠坏”程序员!
  6. 一件程序员必备武器的诞生
  7. 漫画算法:5 分钟搞明白红黑树到底是什么?
  8. 他是浙大 19 岁大一新生,三个月斩获 WWDC 19 奖学金!
  9. 什么是5G?居然有人用漫画把它讲得如此接地气!
  10. 假期还剩 2 天,Python 爬取途牛网,揭秘哪里人少景美!