服务器安装python失败_为什么不从我的个人PyPI服务器安装Python软...

我在Debian 9 / Nginx盒子上创建了一个个人PyPI“软件包”服务器,以便可以确定性地构建我的服务器.我固定了所有Python软件包,并需要确保每当我需要重建电子商务服务器时,我的Python软件包及其子依赖项的确切版本始终可用.

我使用pip2pi软件包填充了此服务器中所需的软件包.但是,当我在客户端服务器上运行“ pip install”命令以安装我的软件包时,出现以下错误:

Looking in indexes: https://packages.example.com/simple

Collecting Django==1.8.4 (from -r requirements.txt (line 2))

Collecting django-extensions==1.5.7 (from -r requirements.txt (line 3))

Could not find a version that satisfies the requirement django-extensions==1.5.7 (from -r requirements.txt (line 3)) (from versions: )

No matching distribution found for django-extensions==1.5.7 (from -r requirements.txt (line 3))

我的需求文件中大约有40个软件包,所以这仅仅是一个例子. Django软件包将被安装,但是django-extensions软件包将使pip失败.

如果我在任何客户端服务器上运行此命令,则会收到上面显示的错误:

pip install -r requirements.txt

需求文件如下所示:

-i https://packages.example.com/simple

Django==1.8.4

django-extensions==1.5.7

(more packages)

现在,在我的软件包服务器上,根软件包目录/ var / www / packages具有以下结构:

# /var/www/packages:

├── Django-1.8.4-py2.py3-none-any.whl

├── django_extensions-1.5.7-py2.py3-none-any.whl

├── simple

?? ├── django

?? │?? ├── Django-1.8.4-py2.py3-none-any.whl -> ../../Django-1.8.4-py2.py3-none-any.whl

?? │?? └── index.html

?? ├── django-extensions

?? │?? ├── django-extensions-1.5.7-py2.py3-none-any.whl -> ../../django_extensions-1.5.7-py2.py3-none-any.whl

?? │?? └── index.html

?? ├── index.html

使用pip2pi的pip2tgz命令构建了此目录结构并安装了软件包:

pip2tgz /var/www/packages/ -r requirements.txt

这是pip2tgz读取的需求输入文件:

-i https://pypi.org/simple

django==1.8.4

django-extensions=1.5.7

(more packages)

这是在软件包服务器上设置nginx根目录的方式:

server {

...

root /var/www/packages;

...

}

我的软件包服务器上的防火墙设置为允许ping,允许我SSH输入以及所有http和https连接.

我在客户端服务器上使用Python 3.5.3和pip 19.0.3.

我不确定自己在做什么错. pip命令看起来正确,但是我想知道pip2pi软件包是否正确设置了我的软件包目录.如果我将客户需求文件中的index参数更改为默认值https://pypi.org/simple,则所有软件包都将恢复无错误.

更新1

如果我尝试从命令行而不是通过需求文件安装django-extensions,我仍然会收到错误消息:

pip install --index-url=https://packages.example.com/simple/ django-extensions

Looking in indexes: https://packages.example.com/simple/

Collecting django-extensions

Could not find a version that satisfies the requirement django-extensions (from versions: )

No matching distribution found for django-extensions

在检查我的其他软件包时,我确实在这里看到一个模式.每当我尝试安装其中wheel文件名包含下划线(_)但软件包目录的规范化名称中每个Python PEP 503带有连字符(“-”)的软件包时,都会发生错误.

例如,django-rq失败:

directory: simple/django-rq

file: django_rq-0.9.0-py2.py3-none-any.whl

另一方面,django-redis-cache不会失败:

directory: simple/django-redis-cache

file: django-redis-cache-1.6.5.tar.gz

但是另一个区别是,前者是wheel文件,而后者是tgz文件,因此也可以解释这一区别.我将继续对此进行调查.

更新2

根据Ares的建议,我使用详细选项运行了pip install:

pip install --verbose --index-url=https://packages.example.com/simple/ django-rq

这是错误:

Created temporary directory: /tmp/pip-ephem-wheel-cache-g_hx5tb1

Created temporary directory: /tmp/pip-req-tracker-1bt5psaw

Created requirements tracker '/tmp/pip-req-tracker-1bt5psaw'

Created temporary directory: /tmp/pip-install-dqvtv6ek

Looking in indexes: https://packages.example.com/simple/

Collecting django-rq

1 location(s) to search for versions of django-rq:

* https://packages.example.com/simple/django-rq/

Getting page https://packages.example.com/simple/django-rq/

Looking up "https://packages.example.com/simple/django-rq/" in the cache

Request header has "max_age" as 0, cache bypassed

Starting new HTTPS connection (1): packages.example.com:443

https://packages.example.com:443 "GET /simple/django-rq/ HTTP/1.1" 304 0

Analyzing links from page https://packages.example.com/simple/django-rq/

Skipping link https://packages.example.com/simple/django-rq/django-rq-0.9.0-py2.py3-none-any.whl (from https://packages.example.com/simple/django-rq/); wrong project name (not django-rq)

Cleaning up...

Removed build tracker '/tmp/pip-req-tracker-1bt5psaw'

Exception information:

Traceback (most recent call last):

File "/home/flaugher/pip3/venv/lib/python3.5/site-packages/pip/_internal/cli/base_command.py", line 179, in main

status = self.run(options, args)

File "/home/flaugher/pip3/venv/lib/python3.5/site-packages/pip/_internal/commands/install.py", line 315, in run

resolver.resolve(requirement_set)

File "/home/flaugher/pip3/venv/lib/python3.5/site-packages/pip/_internal/resolve.py", line 131, in resolve

self._resolve_one(requirement_set, req)

File "/home/flaugher/pip3/venv/lib/python3.5/site-packages/pip/_internal/resolve.py", line 294, in _resolve_one

abstract_dist = self._get_abstract_dist_for(req_to_install)

File "/home/flaugher/pip3/venv/lib/python3.5/site-packages/pip/_internal/resolve.py", line 242, in _get_abstract_dist_for

self.require_hashes

File "/home/flaugher/pip3/venv/lib/python3.5/site-packages/pip/_internal/operations/prepare.py", line 269, in prepare_linked_requirement

req.populate_link(finder, upgrade_allowed, require_hashes)

File "/home/flaugher/pip3/venv/lib/python3.5/site-packages/pip/_internal/req/req_install.py", line 196, in populate_link

self.link = finder.find_requirement(self, upgrade)

File "/home/flaugher/pip3/venv/lib/python3.5/site-packages/pip/_internal/index.py", line 688, in find_requirement

'No matching distribution found for %s' % req

pip._internal.exceptions.DistributionNotFound: No matching distribution found for django-rq

该键似乎在第15行显示“正在跳过链接…错误的项目名称(不是django-rq)”.我不确定为什么它会跳过链接.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值