我正在尝试安装一个从github下载的项目:
jlinkels@schrans-pc:/tmp/subsai/src/subsai$ pip3 install -I git+file:///tmp/subsai
Collecting git+file:/tmp/subsai
Cloning file:///tmp/subsai to /tmp/pip-req-build-8znnvukr
Running command git clone -q file:///tmp/subsai /tmp/pip-req-build-8znnvukr
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing wheel metadata ... done
Collecting whisper-timestamped@ git+https://github.com/linto-ai/whisper-timestamped
Cloning https://github.com/linto-ai/whisper-timestamped to /tmp/pip-install-dk7lxwc1/whisper-timestamped_9286d14b0de04a85a41b274c894ca025
Running command git clone -q https://github.com/linto-ai/whisper-timestamped /tmp/pip-install-dk7lxwc1/whisper-timestamped_9286d14b0de04a85a41b274c894ca025
Collecting openai-whisper<20230124.1,>=20230124
Using cached openai-whisper-20230124.tar.gz (1.2 MB)
Collecting streamlit-player<0.2.0,>=0.1.5
Using cached streamlit_player-0.1.5-py3-none-any.whl (1.7 MB)
Collecting pandas<1.6.0,>=1.5.2
Using cached pandas-1.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.2 MB)
Collecting importlib<1.1.0,>=1.0.4
Using cached importlib-1.0.4.zip (7.1 kB)
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-dk7lxwc1/importlib_89709f26aefb4b5da3eeb624637ca00e/setup.py'"'"'; __file__='"'"'/tmp/pip-install-dk7lxwc1/importlib_89709f26aefb4b5da3eeb624637ca00e/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-xff5mn0s
cwd: /tmp/pip-install-dk7lxwc1/importlib_89709f26aefb4b5da3eeb624637ca00e/
Complete output (11 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 10, in <module>
import distutils.core
File "/usr/lib/python3.9/distutils/core.py", line 16, in <module>
from distutils.dist import Distribution
File "/usr/lib/python3.9/distutils/dist.py", line 19, in <module>
from distutils.util import check_environ, strtobool, rfc822_escape
File "/usr/lib/python3.9/distutils/util.py", line 9, in <module>
import importlib.util
ModuleNotFoundError: No module named 'importlib.util'
----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/31/77/3781f65cafe55480b56914def99022a5d2965a4bb269655c89ef2f1de3cd/importlib-1.0.4.zip#sha256=b6ee7066fea66e35f8d0acee24d98006de1a0a8a94a8ce6efe73a9a23c8d9826 (from https://pypi.org/simple/importlib/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Could not find a version that satisfies the requirement importlib<1.1.0,>=1.0.4 (from subsai)
ERROR: No matching distribution found for importlib<1.1.0,>=1.0.4
安装失败的原因如下:
File "/usr/lib/python3.9/distutils/util.py", line 9, in <module>
import importlib.util
ModuleNotFoundError: No module named 'importlib.util'
importlib是python3.9的一部分,因此它不会失败。
实际上,当我启动Python3 shell时,我可以导入该模块:
Python 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import importlib.util
>>>
另外,我不明白这句话:
Collecting importlib<1.1.0,>=1.0.4
Using cached importlib-1.0.4.zip (7.1 kB)
所有其他依赖项都在requirement.txt中,但不在importlib中:
torch~=1.13.1
openai-whisper~=20230124
streamlit~=1.18.1
streamlit_player~=0.1.5
streamlit-aggrid~=0.3.3
ffsubsync~=0.4.23
git+https://github.com/linto-ai/whisper-timestamped
pandas~=1.5.2
pysubs2~=1.6.0
现在,这一行可能是相关的:
importlib~=1.0.4
在上游存储库中存在。但是安装时抛出了与现在相同的错误。
更新:我还删除了pyproject.toml和poetry.lock中的所有引用,但我没有将其包含在我的原始帖子中。
因此,我克隆了这个项目,并从requirements.txt中删除了对importlib~=1.0.4的引用。
为什么pip仍然坚持安装它,为什么它失败了,而当我在Python3 shell中执行相同的导入时,它成功了。
环境:Debian 11靶心
pip 20.3.4来自于/usr/lib/python3/dist-packages/pip(Python 3.9)
Python 3.9.2语言
1条答案
按热度按时间yyhrrdl81#
感谢php和sinoroc,他们的声明是正确的。我回答这个问题是因为我不想让它没有答案。
关键问题是依赖关系,所有对importlib的引用都必须从requirements.txt和pyproject.toml中删除,这并不太困难,但是pip仍然使用曾经定义的依赖关系。
这并没有改变poetry.lock中声明的依赖关系。为了使用pyproject.toml中的新设置,必须重新生成poetry.lock文件。
与此同时,项目的作者已经解决了我的问题。我弄乱了一些文件,在Git中产生了冲突。所以我只能再次克隆上游版本。
我不能100%确定我正确地复制了如何解决这个问题,但 * 我相信 * 我必须运行
至少这就是我在修改pyproject.toml之后能够执行正确依赖关系的原因
不幸的是,当我开始安装这个项目时,我对诗歌工具包毫无头绪,甚至没有意识到它已经被使用过。
博士的评论是不要运行
但是
仅从本地存储库安装也有帮助。