我正在尝试使用python制作一个仅音频播放器的小型项目。我正在使用的脚本如下:
#!/usr/bin/env python
import re
import sys
import pafy
import vlc
url = "https://www.youtube.com/watch?v=G0OqIkgZqlA"
video = pafy.new(url)
best = video.getbestaudio()
playurl = best.url
player = vlc.MediaPlayer(playurl)
player.play()
while True: pass
现在,此脚本可以在运行manjaro和以下python版本的工作机上很好地工作:
Python 3.7.2 (default, Jan 10 2019, 23:51:51)
我计划运行此脚本的机器是运行raspbian Stretch的raspberry pi zero W,我将其设置为运行此python版本:
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
当我在树莓派上运行此脚本时,我什么也没收到,而在停止它时,我收到以下消息:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/youtube_dl/extractor/__init__.py", line 4, in <module>
from .lazy_extractors import *
ImportError: No module named 'youtube_dl.extractor.lazy_extractors'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "box.py", line 4, in <module>
import pafy
File "/usr/local/lib/python3.5/dist-packages/pafy/__init__.py", line 7, in <module>
from .pafy import new
File "/usr/local/lib/python3.5/dist-packages/pafy/pafy.py", line 48, in <module>
import youtube_dl
File "/usr/local/lib/python3.5/dist-packages/youtube_dl/__init__.py", line 43, in <module>
from .extractor import gen_extractors, list_extractors
File "/usr/local/lib/python3.5/dist-packages/youtube_dl/extractor/__init__.py", line 9, in <module>
from .extractors import *
File "/usr/local/lib/python3.5/dist-packages/youtube_dl/extractor/extractors.py", line 732, in <module>
from .newgrounds import (
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 954, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 896, in _find_spec
File "<frozen importlib._bootstrap_external>", line 1147, in find_spec
File "<frozen importlib._bootstrap_external>", line 1121, in _get_spec
File "<frozen importlib._bootstrap_external>", line 1229, in find_spec
File "<frozen importlib._bootstrap_external>", line 82, in _path_stat
KeyboardInterrupt
一个接一个地运行命令,我认为我发现了vlc module
的问题。当脚本到达以下命令时:
player=vlc.MediaPlayer(playurl)
我得到:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'vlc' has no attribute 'MediaPlayer'
作为参考,我使用pip3安装python-vlc,pafy和youtube_dl模块。
这是我第一次使用Python。通过阅读这里和其他站点的几篇文章,我了解到了这一点。这完全使我感到困惑,我也不知道该怎么做。
在raspbian上安装python完全有可能出现问题(我使用的是全新安装,仅昨晚才重新安装!)。我添加到全新的raspbian安装中的唯一一件事就是更新系统,安装git和其他一些程序。
有人可以帮我吗?
答案 0 :(得分:1)
您的错误是:
AttributeError: module 'vlc' has no attribute 'MediaPlayer'
当我运行以下代码时:
import vlc
player = vlc.MediaPlayer()
它失败,并出现以下错误:
AttributeError: module 'vlc' has no attribute 'MediaPlayer'
这意味着vlc中既没有类也没有名为“ MediaPlayer”的函数。
编辑:
问题似乎与vlc软件包的两个版本(32位和64位)有关。 python-vlc和vlc有两种安装方法。请检查您是否拥有系统版本,并为其安装正确的软件包版本。您可能仍会遇到相同的问题,我缺少一些dll。
我希望下面的链接会有所帮助:
https://stackoverflow.com/questions/42045887/python-vlc-install-problems
https://stackoverflow.com/questions/42105208/error-when-importingpython-vlc
https://stackoverflow.com/questions/38265773/import-vlc-module-in-python
答案 1 :(得分:0)
为简单起见,请将z
程序放在与程序相同的目录中。
这是让vlc.py
玩游戏的最简单形式
vlc
不确定url = "file:///home/rolf/GWPE.mp4"
import vlc
playing = set([1,2,3,4])
instance=vlc.Instance()
player=instance.media_player_new()
player.set_mrl(url)
player.play()
while True:
state = player.get_state()
if state not in playing:
break
的内容是什么,但是上面的内容会播放本地文件,我怀疑传递给它的是pafy。