100 pip install
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
Merge request reports
Activity
changed milestone to %0.6.0
assigned to @moul
De ce que je vois, c'est tout bête:
- Créer un compte sur pypi / pypi de test
- Tu génères des paquets wheel (un source, un binaire).
- 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
- Resolved by Sébastien DA ROCHA
- Resolved by Sébastien DA ROCHA
- 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- Resolved by Sébastien DA ROCHA
- Resolved by Sébastien DA ROCHA
added 2 commits
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 ?
added 5 commits
Toggle commit listIl 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 MoulBon, ç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
added 2 commits
- 7089574a - [mod] #100 (closed): tabulations, install all pip packages in one cmd.
- f01badb3 - [enh] #100 (closed): setup: add license and keywords fields.
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.added 1 commit
- 4118c726 - [enh] #100 (closed), #98 (closed): add Python 3.7 compatibility.
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 monPATH
.
Autrement, je dois comprendre un peu mieux comment faire appel à mon silkaj de développement. Je dois activer avec
pipenv shell
pour avoir unsilkaj
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 unpipenv 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 avecpipenv 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
Par exemple je ne suis pas sûr que mon histoire depip3 install --user
marche partout.
Cool
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 enroot
, 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 !
added 11 commits
- 0131740f - [mod] #100 (closed): Create a silkaj package for pip installation:
- bca0cde6 - [enh] #100 (closed): make silkaj installable from pip:
- 498a7c4e - [mod] #100 (closed): release: update paths, handle version changing in setup.py.
- ffdde793 - [mod] #100 (closed): Pipenv installation for development:
- 67f94929 - [mod] #100 (closed), #80 (closed): deprecate built install in favor of pip install.
- 26fefb1a - [mod] #100 (closed): document silkaj install from pypi/pip.
- 793f6c6c - [mod] #100 (closed): document Pypi deliver in French.
- d8476fe7 - [enh] #100 (closed): set pip as default install method in the readme.
- 42a7c0e2 - [enh] #100 (closed): add badges in readme:
- 471c4fe6 - [fix] typo on version usage message.
- d0bab244 - [mod] #91 (closed): about: add cebash and cgeek in about and use lowercase.
Toggle commit listmentioned 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.
mentioned in commit d067f7d1
added Doc/Website label