View previous topic :: View next topic |
Author |
Message |
341438 n00b
Joined: 01 May 2015 Posts: 47
|
Posted: Sun Jan 03, 2016 10:30 pm Post subject: [ebuild] problème avec un programme python (résolu) |
|
|
Salut à tous,
j'essaie de créer un ebuild pour un programme python, malheureusement sans succès. Je ne comprends pas le problème, donc je ne sais pas dans quelle direction chercher. Pour faire court: j'installe dev-python/pafy et net-misc/mps-youtube. Ils se trouvent sur mon overlay, à savoir tristelune. Vous pouvez trouver les ebuilds ici: https://github.com/tristelune1/tristelune-overlay.
Ca compile, sans problème, mais au démarrage de mps-youtube avec la commande mpsyt:
Code: |
% mpsyt
Traceback (most recent call last):
File "/usr/lib/python-exec/python3.4/mpsyt", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib64/python3.4/site-packages/pkg_resources/__init__.py", line 3138, in <module>
@_call_aside
File "/usr/lib64/python3.4/site-packages/pkg_resources/__init__.py", line 3124, in _call_aside
f(*args, **kwargs)
File "/usr/lib64/python3.4/site-packages/pkg_resources/__init__.py", line 3151, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/lib64/python3.4/site-packages/pkg_resources/__init__.py", line 661, in _build_master
ws.require(__requires__)
File "/usr/lib64/python3.4/site-packages/pkg_resources/__init__.py", line 962, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/lib64/python3.4/site-packages/pkg_resources/__init__.py", line 849, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'youtube-dl' distribution was not found and is required by pafy
|
youtube-dl est installé sur mon système:
Code: |
% emerge --search youtube-dl
[ Results for search key : youtube-dl ]
Searching...
* net-misc/youtube-dl
Latest version available: 2016.01.01
Latest version installed: 2015.11.27.1
Size of files: 1,831 KiB
Homepage: https://rg3.github.com/youtube-dl/
Description: Download videos from YouTube.com (and more sites...)
License: public-domain
|
avec python un
fonctionne. J'ai plusieurs versions de python installées:
Code: |
% eselect python list
Available Python interpreters:
[1] python2.7
[2] python3.4 *
[3] python3.5
|
Donc la version utilisée est la 3.4. J'ai bricolé dans tous les sens avec les variables PYTHON_TARGETS et PYTHON_SINGLE_TARGET, donc il est possible que le problème vienne de là. Ce qui est sûr c'est que youtube-dl est compilé pour python 3.4. Voici un extrait du contenu de youtube-dl:
Code: |
[01m/usr[39;49;00m
[01m/usr/bin[39;49;00m
/usr/bin/youtube-dl
[01m/usr/lib64[39;49;00m
[01m/usr/lib64/python3.4[39;49;00m
[01m/usr/lib64/python3.4/site-packages[39;49;00m
[01m/usr/lib64/python3.4/site-packages/youtube_dl[39;49;00m
/usr/lib64/python3.4/site-packages/youtube_dl/YoutubeDL.py
/usr/lib64/python3.4/site-packages/youtube_dl/__init__.py
/usr/lib64/python3.4/site-packages/youtube_dl/__main__.py
[01m/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__[39;49;00m
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/YoutubeDL.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/YoutubeDL.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/__init__.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/__init__.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/__main__.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/__main__.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/aes.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/aes.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/cache.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/cache.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/compat.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/compat.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/jsinterp.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/jsinterp.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/options.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/options.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/swfinterp.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/swfinterp.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/update.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/update.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/utils.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/utils.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/version.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__/version.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/aes.py
/usr/lib64/python3.4/site-packages/youtube_dl/cache.py
/usr/lib64/python3.4/site-packages/youtube_dl/compat.py
[01m/usr/lib64/python3.4/site-packages/youtube_dl/downloader[39;49;00m
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__init__.py
[01m/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__[39;49;00m
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/__init__.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/__init__.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/common.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/common.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/dash.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/dash.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/external.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/external.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/f4m.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/f4m.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/fragment.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/fragment.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/hls.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/hls.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/http.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/http.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/rtmp.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/rtmp.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/rtsp.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__/rtsp.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/common.py
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/dash.py
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/external.py
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/f4m.py
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/fragment.py
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/hls.py
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/http.py
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/rtmp.py
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/rtsp.py
[01m/usr/lib64/python3.4/site-packages/youtube_dl/extractor[39;49;00m
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/__init__.py
[01m/usr/lib64/python3.4/site-packages/youtube_dl/extractor/__pycache__[39;49;00m
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/__pycache__/__init__.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/__pycache__/__init__.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/__pycache__/abc.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/__pycache__/abc.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/__pycache__/abc7news.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/__pycache__/abc7news.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/__pycache__/academicearth.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/__pycache__/academicearth.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/__pycache__/addanime.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/__pycache__/addanime.cpython-34.pyo
.
.
.
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/youtube.py
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/zapiks.py
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/zdf.py
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/zingmp3.py
/usr/lib64/python3.4/site-packages/youtube_dl/jsinterp.py
/usr/lib64/python3.4/site-packages/youtube_dl/options.py
[01m/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor[39;49;00m
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__init__.py
[01m/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__[39;49;00m
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__/__init__.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__/__init__.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__/common.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__/common.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__/embedthumbnail.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__/embedthumbnail.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__/execafterdownload.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__/execafterdownload.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__/ffmpeg.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__/ffmpeg.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__/metadatafromtitle.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__/metadatafromtitle.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__/xattrpp.cpython-34.pyc
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__/xattrpp.cpython-34.pyo
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/common.py
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/embedthumbnail.py
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/execafterdownload.py
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/ffmpeg.py
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/metadatafromtitle.py
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/xattrpp.py
/usr/lib64/python3.4/site-packages/youtube_dl/swfinterp.py
/usr/lib64/python3.4/site-packages/youtube_dl/update.py
/usr/lib64/python3.4/site-packages/youtube_dl/utils.py
/usr/lib64/python3.4/site-packages/youtube_dl/version.py
[01m/usr/share[39;49;00m
[01m/usr/share/bash-completion[39;49;00m
[01m/usr/share/bash-completion/completions[39;49;00m
/usr/share/bash-completion/completions/youtube-dl
[01m/usr/share/doc[39;49;00m
[01m/usr/share/doc/youtube-dl-2015.11.27.1[39;49;00m
/usr/share/doc/youtube-dl-2015.11.27.1/README.txt.bz2
[01m/usr/share/man[39;49;00m
[01m/usr/share/man/man1[39;49;00m
/usr/share/man/man1/youtube-dl.1.bz2
|
Qu'est-ce qui peut coincer ? J'ai vu que pour Archlinux par exemple, la commande pour créer le paquet est:
Code: |
python setup.py install --root="$pkgdir" --optimize=1
|
J'ai bien essayé dans le ebuild:
Code: |
python_install() {
distutils-r1_python_install --root="${D}"
}
|
Mais le résultat n'a pas été convaincant!
Last edited by 341438 on Sun Mar 20, 2016 4:29 pm; edited 1 time in total |
|
Back to top |
|
|
341438 n00b
Joined: 01 May 2015 Posts: 47
|
Posted: Mon Jan 11, 2016 10:16 pm Post subject: |
|
|
Je progresse. Je peux donc importer le module youtube_dl avec python. Avec l'interpréteur python, si je fais:
Code: | >>> pkg_resources.get_distribution('numpy')
numpy 1.10.2 (/usr/lib64/python2.7/site-packages)
|
Par contre pour youtube_dl:
Code: |
>>> pkg_resources.get_distribution('youtube_dl')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/site-packages/pkg_resources/__init__.py", line 561, in get_distribution
dist = get_provider(dist)
File "/usr/lib64/python2.7/site-packages/pkg_resources/__init__.py", line 441, in get_provider
return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
File "/usr/lib64/python2.7/site-packages/pkg_resources/__init__.py", line 962, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/lib64/python2.7/site-packages/pkg_resources/__init__.py", line 849, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'youtube-dl' distribution was not found and is required by the application
|
Le même problème se produit par exemple pour le module yaml: je peux l'importer, mais pas utiliser la méthode de pkg_resources. Le point commun est la présence ou non d'un fichier .egg-info. Pour numpy il existe un fichier numpy-1.10.2-py2.7.egg-info et pas pour youtube-dl. Sur un autre ordinateur Archlinux est installé et là le programme mpsyt fonctionne. Mais un dossier youtube_dl-2016.1.9-py3.5.egg-info existe. Donc la question est de savoir maintenant comment c'est produit. Mes connaissances se limitent à savoir que c'est lié à setuptools. Je ne vois pas de use flag qui pourrait m'aider pour youtube-dl. |
|
Back to top |
|
|
netfab Veteran
Joined: 03 Mar 2005 Posts: 1958 Location: 127.0.0.1
|
Posted: Tue Jan 12, 2016 7:12 pm Post subject: |
|
|
Salut,
Ce qui suit ne va pas résoudre ton problème, mais je pense qu'il y a déjà un souci avec l'ebuild de dev-python/pafy-0.4.3.
En effet, ici sur un système stable, si je fais un :
Code: |
# emerge -pv1 pafy
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild N ] net-misc/youtube-dl-2016.01.01::gentoo USE="-offensive {-test}" PYTHON_SINGLE_TARGET="python2_7 -python3_3 -python3_4 (-python3_5)" PYTHON_TARGETS="python2_7 python3_4 -python3_3 (-python3_5)" 0 KiB
[ebuild N ~] dev-python/pafy-0.4.3::perso PYTHON_TARGETS="python3_4" 0 KiB
|
On s'aperçoit que net-misc/youtube-dl va être uniquement construit pour python-2.7 (PYTHON_SINGLE_TARGET="python2_7 ...))
C'est normal, puisque l'ebuild de youtube-dl définit la variable DISTUTILS_SINGLE_IMPL=true, ce qui signifie que ce paquet ne peut-être construit que pour une et une seule implémentation de python à la fois.
Or, d'après l'eclass python-single-r1 :
Quote: |
# Please note that packages support multiple Python implementations
# (using python-r1 eclass) can not depend on packages not supporting
# them (using this eclass).
|
Ce qui pour moi, signifie aussi que, étant donné que pafy ne fonctionne qu'avec python-3.4, il faudrait forcer youtube-dl pour python-3.4, de la façon suivante :
Code: |
--- pafy-0.4.3.ebuild.old 2016-01-12 13:40:54.109506299 +0100
+++ pafy-0.4.3.ebuild 2016-01-12 19:07:20.000000000 +0100
@@ -4,6 +4,7 @@
EAPI=5
PYTHON_COMPAT=( python3_4 )
+DISTUTILS_SINGLE_IMPL=true
inherit distutils-r1
DESCRIPTION="Python library to download YouTube content and retrieve metadata"
@@ -15,8 +16,8 @@
KEYWORDS="~x86 ~amd64"
IUSE=""
-DEPEND="dev-lang/python
- net-misc/youtube-dl"
+DEPEND="${PYTHON_DEPS}
+ net-misc/youtube-dl[${PYTHON_USEDEP}]"
RDEPEND="${DEPEND}"
python_install() {
|
Tu remarqueras que dans ce patch j'ai retiré la dépendance sur dev-lang/python, je ne pense pas qu'il faille dépendre directement sur python, je pense qu'il vaut mieux utiliser ${PYTHON_DEPS}.
De cette façon, lorsque je fais un :
Code: |
# emerge -pv1 pafy
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild N ] net-misc/youtube-dl-2016.01.01::gentoo USE="-offensive {-test}" PYTHON_SINGLE_TARGET="python3_4 -python2_7 -python3_3 (-python3_5)" PYTHON_TARGETS="python2_7 python3_4 -python3_3 (-python3_5)" 0 KiB
[ebuild N ~] dev-python/pafy-0.4.3::perso PYTHON_TARGETS="python3_4" 0 KiB
Total: 2 packages (2 new), Size of downloads: 0 KiB
The following USE changes are necessary to proceed:
(see "package.use" in the portage(5) man page for more details)
# required by dev-python/pafy-0.4.3::perso
# required by pafy (argument)
>=net-misc/youtube-dl-2016.01.01 -python_single_target_python2_7 python_single_target_python3_4
|
emerge me propose de construire youtube-dl pour python-3.4 (la bonne version pour pafy !), et me donne la ligne à ajouter dans ma configuration pour y parvenir.
Sinon, une fois mps-youtube installé, j'obtiens la même traceback que toi :
Code: |
pkg_resources.DistributionNotFound: The 'youtube-dl' distribution was not found and is required by pafy
|
Mais je n'ai pas encore essayé de comprendre ce qui peut bien se passer. |
|
Back to top |
|
|
341438 n00b
Joined: 01 May 2015 Posts: 47
|
Posted: Sun Mar 20, 2016 4:28 pm Post subject: |
|
|
Finalement, le problème est à présent réglé. Je pense que c'est largement dû à la libraire pafy 0.5.0. l'ebuild est sur mon overlay (tristelune),
si quelqu'un veut essayer cela fonctionne. Merci pour le coup de main! |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|