【发布时间】:2021-07-01 05:01:06
【问题描述】:
我正在尝试用 Python 构建一个网站制作器,并且它可以工作 - 直到我决定放置声音效果,这需要 playsound。在 StackOverflow 搜索自动安装库后,我找到了答案并将其弹出到 setup.py。然后我在 Windows 中运行代码以检查它是否有效 - 它确实有效,但后来我记得 macOS 和 Linux(根据我的经验)不能使用 pip,它们只能使用 pip3。所以我在设置文件中写了一个例外,所以每当ModuleNotFoundError 在pip 序列中弹出时,它就会使用pip3。然而,我得到的(在 Ubuntu 中)是这样的:
bye@DESKTOP-L5UUI0C:/mnt/f/pythonexperements/webmaker$ python3 1.py
__ __ _ _ _ __ __ _
\ \......../ / | |.......(_| |.......| \/ |.....| |..............
.\ \../\../ _..| |__ ___ _| |_ ___..| \ / |.__ _| |._____ _ __ ..
..\ \/ \/ / _ | '_ \/ __| | __/ _ \.| |\/| |/ _` | |/ / _ | '__|..
...\ /\ | __| |_) \__ | | || __/.| |..| | (_| | | __| |.....
....\/..\/.\___|_.__/|___|_|\__\___|.|_|..|_|\__,_|_|\_\___|_|.....
by ByeMC; v1.0
Installing required libraries, installing "playsound"
Traceback (most recent call last):
File "1.py", line 13, in <module>
from playsound import playsound
ModuleNotFoundError: No module named 'playsound'
During handling of the above exception, another exception occurred: # this is exactly what the terminal produced, please don't edit this line
Traceback (most recent call last):
File "1.py", line 16, in <module>
import setup
File "/mnt/f/pythonexperements/webmaker/setup.py", line 3, in <module>
import pip
ModuleNotFoundError: No module named 'pip'
程序的主脚本:
[...]
print(asciiart)
try:
from playsound import playsound
except ModuleNotFoundError:
print('Installing required libraries, installing "playsound"')
import setup
install('playsound')
print('Install done')
playsound('notif')
[...]
自动安装库的代码:
# Setup files
import pip
depend = ['playsound']
def install(package):
import importlib
try:
importlib.import_module(package)
except ImportError:
try:
import pip
pip.main(['install', package])
except ModuleNotFoundError:
import pip3
pip3.main(['install', package])
finally:
globals()[package] = importlib.import_module(package)
for x in depend:
install(x)
如果你能帮助我,我会很高兴的。
【问题讨论】:
-
pip3 不是模块。
import pipthrowing ModuleNotFoundError 表示 pip 本身没有安装。 -
stackoverflow.com/a/62555575/11138259 --
import subprocess, sys; subprocess.check_call([sys.executable, '-m', 'pip', 'install', package])-- 不管你想要做什么,似乎都是个坏主意。有更好的方法来解决这个问题。 -
你应该使用 setuptools 创建一个真实的
setup.py并将playsound添加到requirements.txt而不是这些黑客。 -
抱歉,不清楚您的问题到底是什么。 第三方库是否尝试使用
pip?你的代码这样做吗?在后一种情况下,为什么这样做而不是依赖安装后存在的依赖项?pip/pip3可执行文件实际上是否可用于您正在使用的 python 版本?请注意,许多 Linux 包管理器在没有 pip 的情况下安装系统 python - 这是避免破坏系统库的保护措施。
标签: python python-3.x pip modulenotfounderror