最新新闻,最快送达

自定义Python PyPI存储库

  • 发布时间:2020-09-14
  • 来源:中培教育网

  Python默认从PyPI存储库下载其依赖项。它包含最新版本(稳定或不稳定)和各种数量的软件包。那么定制私有软件包存储库的需求是什么?想要知道这个问题的答案,首先来说一下依赖管理:您可以显式控制软件包的依赖关系,而不考虑版本弃用或最新的向后不兼容版本。当然,这可以通过在requirements.txt中定义版本来完成,但是要确保我们得到的每个软件包都像我们期望的那样,最好使用自定义存储库。

  PyPI服务器弃用TLS v1.1,v1.0

  PyPI服务器已不再支持TLS 1.0 / TLS 1.1版本的设备以下载软件包。

  “我将看到可能在截止日期之前组织一些预定的TLSv1.0和TLSv1.1的“掉电”,以尝试帮助人们找到需要更新的地方。任何计划的限电措施将在发生之前发布到status.python.org。”

  因此,升级Python:TLS v1.2很快将成为必需,现在它已成为强制性的。具有Ubuntu 12.04或更低版本的设备具有TLS v1.1,这意味着这些设备无法从默认python软件包管理服务器下载任何python软件包。通过在终端中运行以下命令来检查TLS版本。

  python2 -c "import urllib2,json; print(json.loads(urllib2.urlopen.read())['tls_version'])"

  有一些解决方法,例如明确地说要从PyPI服务器下载PIP。

  pip install --index-url = scapy

  这已经工作了一段时间,然后它也并没有起作用。

  在这里,我们只有两个选项,升级TLS版本或使用自定义存储库。经过一段时间的升级后,TLS也变得不可能了,因为您需要升级openssl和python密码模块。无法升级python模块,因此我们陷入了僵局,这是自定义存储库可以拯救的地方。

  建立自定义存储库

  您需要执行以下操作来创建自己的自定义python存储库。

  1. 托管Ubuntu服务器

  2. 带有TLS v1.2的Python环境

  3. 公共区域

  首先登录到您的Ubuntu服务器,然后在require.txt文件中列出所有所需的依赖项,如下所示

  boto3 == 1.4.4

  botocore == 1.5.90

  click == 3.1coloredlogs

  == 8.0

  configobj == 5.0.6

  docutils == 0.13.1

  futures == 3.1.1

  jmespath == 0.9.3

  pexpect == 3.1

  pyOpenSSL = = 0.15.1

  pyasn1 == 0.4.2

  pycrypto == 2.6.1

  python-dateutil == 2.6.1

  请求== 2.5.3

  s3transfer == 0.1.10

  scapy == 2.4.0

  六个== 1.5.2

  speedtest- cli == 2.0.0

  urllib3 == 1.7.1

  virtualenv == 15.2.0

  websocket-client == 0.16.0

  wheel == 0.24.0

  ndg-httpsclient

  distribution

  pip == 1.5.4

  然后创建Python虚拟环境以安装这些依赖项。

  pip install virtualenv

  virtualenv repo

  source repo/bin/activate

  mkdir /home/batman/py-cache

  在虚拟环境中,现有的pip版本应为1.5.4。

  pip install -r requirements.txt --no-use-wheel --download="/home/batman/py-cache"

  现在,所有软件包都已下载到您的Ubuntu服务器中,我们需要将所有软件包组织在标准目录结构中,以便PIP客户端可以识别模块。为此,我编写了一个小脚本,在py-cache目录中运行它,它将为您完成工作。

  为os.listdir('/ home / batman / py-cache')中的文件名导入os :

  尝试:

  package_name = filename.split('。')[0] .split('-')

  del package_name [-1]

  package_name ='-'。join(map(str,package_name))

  打印package_name

  os.system('mkdir%s'%package_name)

  os.system('mv%s%s /'%(filename,package_name))

  除外e:

  打印'ERROR:'

  打印'e'

  确保已移动所有包装。如果未移动任何内容,请手动创建目录,然后将tar球移动到其中。我们快到了!让我们托管存储库。

  首先安装托管客户端

  pip install twisted

  默认情况下,主机从端口8080启动,请确保没有其他进程拥有它。

  lsof -i:8080

  使您的终端进入py-cache目录

  twistd -n web --path .

  您已经建立了自己的自定义存储库,现在将其托管在Ubuntu服务器的端口8080中。

  通知PIP客户我们的自定义存储库

  在您的客户中

  vim /etc/pip.conf

  添加您的自定义存储库URL

  [global]

  index-url = http://10.1.10.69:8080

  然后导出环境变量PIP_CONFIG_FILE。

  导出PIP_CONFIG_FILE = / etc / pip.conf

  而已。现在,通常的如下pip安装将从您的自定义存储库安装python软件包。

  点安装scappy

  在这里,您可以完全控制需要提供的依赖性以及需要进行身份验证和禁止的客户端。希望我已经与大家分享了有用的信息。

  以上就是关于自定义Python PyPI存储库的全部内容,想了解更多关于Python的信息,请继续关注中培教育。

近期开班

phone
全国报名服务热线: 400-626-7377
合作伙伴
  • 国际APMG组织
  • 思科(Cisco)
  • 国际OPEN GROUP组织
  • 国家外专局培训中心
  • 上海银行
  • 中国石油管道局工程有限公司
  • 朗新科技
  • 中国国家博物馆
金牌客户
  • 中国石油天然气集团公司
  • 中国农业银行
  • 中国建设银行
  • 波司登集团
  • 浙江移动
合作机构
  • 美国项目管理协会
  • 人力资源和社会保障部
  • 中华人民共和国工业和信息化部
  • 中国计算机技术职业资格网
  • CITIF中国电子信息行业联合会
  • PEOPLECERT
微信公众号
公众号

微信号:zpitedu

  • 中培教育 Copyright © 2006-2020 北京中培伟业管理咨询有限公司 .All Rights Reserved
  • 京ICP备13024721号  gonganimg  京公网安备11010602007294号  增值电信业务经营许可证:京B2-20201348  全国统一报名专线:400-626-7377