Skip to content
Snippets Groups Projects

100 pip install

Merged Sébastien DA ROCHA requested to merge cebash/silkaj:100_pip_install into dev
All threads resolved!

Fix #100 (closed)

  • renommer le dossier src en silkaj : ça devient un packet silkaj \o/
  • le lien symbolique silkaj à la racine.
  • modifier toutes les import dans le code pour ajouter "silkaj." devant
  • créer un setup.py / supprimer requirements.txt
  • exporter le code de la commande silkaj.py dans un dossier bin à part

On peut installer en faisant un "pip3 install ." dans le dossier racine.

Ou l'installer à distance : pip3 install git+https://https://git.duniter.org/cebash/silkaj.git@100_pip_install <= URL à corriger après le merge de la branche.

Je vais essayer de pousser sur le pypi de test et je te fais un tuto pour que tu le pousses sur le pypi officiel

Edited by Moul

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Moul changed the description

    changed the description

  • Moul changed milestone to %0.6.0

    changed milestone to %0.6.0

  • Moul assigned to @moul

    assigned to @moul

  • De ce que je vois, c'est tout bête:

    1. Créer un compte sur pypi / pypi de test
    2. Tu génères des paquets wheel (un source, un binaire).
    3. Tu envois tes paquets sur pypi

    Créer un compte sur pypi

    https://test.pypi.org/account/register/ https://pypi.org/account/register/

    Ca te permettra de gérer tes versions et tes projets (notamment ajouter des collaborateurs qui pourront aussi faire des livraisons).

    Générer les paquets

    D'abord il faut installer/mettre à jour setuptools et wheels pip install -U setuptools wheel

    Ensuite dans le dossier racine du crée tes paquets: python3 setup.py sdist bdist_wheel

    Ca te fait un dossier dist avec du bordel dedans :

    $ ls dist/
    silkaj-0.6.0-py3-none-any.whl  silkaj-0.6.0.tar.gz

    Pousser les paquets sur pypi

    Il te faut installer twine d'abord : pip install twine

    Puis pousser les paquets:

    twine upload --repository-url https://test.pypi.org/legacy/ dist/*

    Tu peux voir ton paquet ici: https://test.pypi.org/project/silkaj/

    Je suppose que pour uploader les paquets sur le vrai pypi, tu peux juste faire twine upload dist/*

    Si tu veux installer ton paquet depuis le dépot de test sur un venv tout neuf:

    pip install --index-url https://test.pypi.org/simple/ silkaj

    Si tu ne veux pas tapper ton password à chaque fois, tu peux utiliser ça: https://github.com/pypa/twine#keyring-support

  • Super ! C’est du très bon boulot ! Un grand merci !

  • Moul
  • Moul
    • Installing from pip must be documented.
    • Releasing, uploading on pypi must be documented.
    • Document executable path modification: silkaj –> bin/silkaj.
    • Remove executable rights on silkaj/silkaj.py.
    Edited by Moul
  • Sébastien DA ROCHA resolved all discussions

    resolved all discussions

  • added 4 commits

    • 39d2639d - [fix] typo on usage message
    • 42629747 - [fix] pyinstaller and release script (package path)
    • 1bbb6516 - [enh] give precise Python compatible versions (tested)
    • d2932ed5 - [mod] tab typo

    Compare with previous version

  • Moul
  • Moul
  • added 2 commits

    • 2629bf8b - [mod] wrong license
    • 811da899 - [fix] stop release when branch is not master

    Compare with previous version

  • Sébastien DA ROCHA resolved all discussions

    resolved all discussions

  • J'ai un problème avec pipenv. Il ne détecte pas le dossier "silkaj" comme un package python. Quand je lance bin/silkaj dans l'environnement, il m'envoie bouler par

    17:05 seba@seba-N750HU: ~/Sources/silkaj$ pipenv run bin/silkaj
    Traceback (most recent call last):
      File "bin/silkaj", line 3, in <module>
        from silkaj.network_tools import check_port, best_node
    ModuleNotFoundError: No module named 'silkaj'

    Du coup, j'ai fait pipenv install "-e " ça m'installe le paquet silkaj (en éditable, donc on modifie les sources, elles sont prises en compte à la prochaine exécution) dans l'environnement. Là ça marche.

    Ça rajoute ça au Pipfile:

    diff --git a/Pipfile b/Pipfile
    index a05dbf6..c91fd92 100644
    --- a/Pipfile
    +++ b/Pipfile
    @@ -10,6 +10,7 @@ tabulate = "*"
     scrypt = "*"
     pyaes = "*"
     PyNaCl = "*"
    +"e1839a8" = {path = ".", editable = true}
     
     [dev-packages]

    C'est très vilain mais apparemment c'est d'usage avec Pipenv : https://github.com/pypa/pipenv/issues/689

    Est-ce que ça te vas ?

  • Ah encore un truc, tu as fait une livraison sur Pypi (le vrai, pas celui de test) de la version 0.6.0.

    https://pypi.org/project/silkaj/

    Je crois que c'est mort, même si tu l'effaces, il ne voudra pas que tu relivres un fichier avec la même version.

    Il y a un souci avec le MarkDown, apparemment c'est un problème connu sur le vieux pypi. La j'ai pas compris pourquoi c'était tout pourri, si ça continue, on pourra peut-être tester de convertir le README en ReST avec pandoc ?

    Dernier truc, si tu veux récupérer le projet silkaj sur pypi test, crée un compte et je te donnerais les droits.

  • Oui, je rencontre le même problème avec pipenv.

    Laissons un peu de temps pour voir si ce contournement nous convient.


    Oui, j’ai publié sur Pypi de prod une 0.6.0 et une 0.5.3.

    J’ai pu supprimer la v0.6.0 et après cinq minutes c’est la 0.5.3 qui est présente.

    C’est des comptes séparés sur pypi de prod et de test ?

  • Yep, j'ai essayé de t'ajouter sur le test, mais ton compte existe pas.

  • added 5 commits

    • c7c76a9a - Remove executable rights on silkaj/silkaj.py
    • 2f304fdc - [mod] Update pipenv documentation
    • a7577f3f - [mod] documentation for installing silkaj with pypi/pip
    • 0eed2221 - [mod] Update pyinstaller documentation with pip/pypi
    • f9cf72f7 - [mod] document deliver on pypi

    Compare with previous version

  • Il y a un souci avec le MarkDown, apparemment c'est un problème connu sur le vieux pypi. La j'ai pas compris pourquoi c'était tout pourri, si ça continue, on pourra peut-être tester de convertir le README en ReST avec pandoc ?

    Edited by Moul
  • Ben le truc c'est que ça marche en test et pas en prod...

    Je vais essayer d'uploader ton paquet en test. Si à merdouille, c'est peut-être qu'une des versions de twane/pip/setuptools n'est pas à jour.

  • Bon, ça marche : https://pypi.org/project/silkaj/0.5.3/

    Tu auras pas une vielle version de twine ?

    (venv) 17:48 seba@seba-N750HU: ~/Sources/june/silkaj$ pip list
    Package           Version  
    ----------------- ---------
    certifi           2018.4.16
    cffi              1.11.5   
    chardet           3.0.4    
    commandlines      0.4.1    
    idna              2.7      
    ipaddress         1.0.22   
    pip               10.0.1   
    pkg-resources     0.0.0    
    pkginfo           1.4.2    
    pyaes             1.6.1    
    pycparser         2.18     
    PyNaCl            1.2.1    
    requests          2.19.1   
    requests-toolbelt 0.8.0    
    scrypt            0.8.6    
    setuptools        39.2.0   
    silkaj            0.6.0    
    six               1.11.0   
    tabulate          0.8.2    
    tqdm              4.23.4   
    twine             1.11.0   
    urllib3           1.23     
    wheel             0.31.1   
  • Mon compte sur test.pypi est M5oul.

    En effet, twine n’est pas à jour de mon côté.

  • Voilà je t'ai donné les droits.

  • Moul added 2 commits

    added 2 commits

    Compare with previous version

  • Moul added 1 commit

    added 1 commit

    Compare with previous version

  • Merci.


    Ok, j’ai réussit à publier avec le rendu markdown avec la dernière version de twine.


    J’ai publié deux trois corrections et l’ajout de badges dans le readme basé sur setup.py qui est sur Pypi.

  • Moul added 1 commit

    added 1 commit

    Compare with previous version

  • Documentation à propos de l’usage de Editable Dependencies (e.g. -e . )

  • J’aimerais bien intégrer au script de release, la génération et la publication sur Pypi :

    pip() {
           exec_installed twine
           python3 setup.py sdist bdist_wheel
           twine upload dist/silkaj-$VERSION*
    }

    Le problème étant que je ne peux pas tester dans l’état actuel :

    • twine n’est pas à jour sous Fedora
    • je dois appeler twine installé via pip depuis son path. Il n’est pas dans mon PATH.

    Autrement, je dois comprendre un peu mieux comment faire appel à mon silkaj de développement. Je dois activer avec pipenv shell pour avoir un silkaj fonctionnel.


    Sinon, après ça je pense qu’on est bon pour fusionner tout ça !

  • C'est chaud parce que là, tu dois présumer que le gars qui fait la livraison a installé twine comme toi. Bon vu qu e c'est toi c'est pas déconnant, mais ça aidera pas à déléguer ;-)

    Sinon tu pars du principe que tu as installé un pipenv, que dedans tu as twine (pipenv install twine ah , il faudrait faire pareil pour setuptools et wheel) ? et tu fais un pipenv run twine ?

    D'ailleurs, pour pas que pipfile nous enbête, on devrait l'installer que en dev, non ?


    Si j'ai bien compris, si tu fais un pipenv install '-e .', tu installes ton dépôt dans l'environnement virtuel que pipenv a crée pour ce dossier, ça ne te l'installe pas pour ton user, contrairement à pip3 install --user -e .. Donc tu dois basculer dans cet environnement virtuel avec pipenv shell pour que sakia marche.

    C'est cool que tu sois sous Fedora, moi je connais plutôt Debian/Ubuntu, du coup on ratisse plus large au niveau des distributions :smiley: Par exemple je ne suis pas sûr que mon histoire de pip3 install --user marche partout.


    Cool :smiley:

  • Oui, tu as raison, c’est pas si simple que ça pour quelqu’un non accoutumé. Mais, pour la personne accoutumée au process de release, je pense que ça lui fait gagner du temps.


    Bon, va falloir que je m’accoutume à taper une commande de plus avant le démarrage de silkaj.

    Par exemple je ne suis pas sûr que mon histoire de pip3 install --user marche partout.

    Si, si, je dois aussi ajouter --user sinon ça ne fonctionne pas. Et avant de découvrir cette commande je le faisais en root, ce qui n’est pas idéal ¡

  • oui, si tu ne mets pas user, il l'installe pour le system, et ton utilisateur n'a pas le droit de le modifier.

    Je faisait le bourrin en root aussi, mais c'est un peu chaud quand tu mets à jour des paquets qui ont besoin de compiler.

    J'avoue que le pipenv me semble simple, fonctionnel et prévisible. Je pense que ça va devenir rapidement un très bon pote !

  • Moul added 11 commits

    added 11 commits

    Compare with previous version

  • Moul mentioned in issue #105 (closed)

    mentioned in issue #105 (closed)

  • @cebash, j’ai réécrit l’historique dans le but de le nettoyer. Je t’ai assigné des modifications qui ne sont pas les tiennes. Dis-moi si ça te convient. Je compte fusionner après ton accord.


    @1000i100 Merci pour la proposition. À effectuer plus tard : #105 (closed).

  • @moul Yep pas de souci.

  • Moul mentioned in commit d067f7d1

    mentioned in commit d067f7d1

  • merged

  • added Doc/Website label

  • Please register or sign in to reply
    Loading