Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[ebuild] problème avec un programme python (résolu)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
341438
n00b
n00b


Joined: 01 May 2015
Posts: 47

PostPosted: Sun Jan 03, 2016 10:30 pm    Post subject: [ebuild] problème avec un programme python (résolu) Reply with quote

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

Code:

import youtube_dl


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:

/usr
/usr/bin
/usr/bin/youtube-dl
/usr/lib64
/usr/lib64/python3.4
/usr/lib64/python3.4/site-packages
/usr/lib64/python3.4/site-packages/youtube_dl
/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
/usr/lib64/python3.4/site-packages/youtube_dl/__pycache__
/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
/usr/lib64/python3.4/site-packages/youtube_dl/downloader
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__init__.py
/usr/lib64/python3.4/site-packages/youtube_dl/downloader/__pycache__
/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
/usr/lib64/python3.4/site-packages/youtube_dl/extractor
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/__init__.py
/usr/lib64/python3.4/site-packages/youtube_dl/extractor/__pycache__
/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
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__init__.py
/usr/lib64/python3.4/site-packages/youtube_dl/postprocessor/__pycache__
/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
/usr/share
/usr/share/bash-completion
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/youtube-dl
/usr/share/doc
/usr/share/doc/youtube-dl-2015.11.27.1
/usr/share/doc/youtube-dl-2015.11.27.1/README.txt.bz2
/usr/share/man
/usr/share/man/man1
/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
View user's profile Send private message
341438
n00b
n00b


Joined: 01 May 2015
Posts: 47

PostPosted: Mon Jan 11, 2016 10:16 pm    Post subject: Reply with quote

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
View user's profile Send private message
netfab
Veteran
Veteran


Joined: 03 Mar 2005
Posts: 1896
Location: 127.0.0.1

PostPosted: Tue Jan 12, 2016 7:12 pm    Post subject: Reply with quote

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
View user's profile Send private message
341438
n00b
n00b


Joined: 01 May 2015
Posts: 47

PostPosted: Sun Mar 20, 2016 4:28 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
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