web-dev-qa-db-fra.com

Comment installer mon propre python (paquet)) via conda et observer ses modifications

J'ai un fichier mysql.py, que j'utilise dans presque tous mes projets. Comme je ne veux pas copier et coller le même fichier dans chacun de ces projets, j'ai écrit un module - éventuellement un paquet dans le futur.

Question

Comment ajouter un module local à mon environnement conda et le mettre à jour ou le regarder automatiquement lorsque je modifie quelque chose dans mysql.py? Comment faire la même chose pour un paquet?

Je voudrais éviter de configurer un canal/référentiel local et simplement faire référence au dossier avec mysql.py.

22
Michael

Pendant que les réponses précédentes font ce dont j'ai besoin, je veux simplement montrer ce que je vais utiliser à la place. Puisque c’était mon plan de tout apprendre sur les paquets conda ...

0. Bonnes sources

  1. Michael Sarahan - Faire des paquets et des emballages "juste du travail" | YouTube
  2. GitHub - audreyr/cookiecutter: Un utilitaire de ligne de commande qui crée des projets à partir de cookiecutters (modèles de projet) et utilise l’un de ces modèles:

1. Créez un modèle de package python pour conda utilisant cookiecutter

conda install -c conda-forge cookiecutter

Maintenant, allez dans le répertoire où vous voulez initialiser votre paquet, puis faites:

cookiecutter https://github.com/conda/cookiecutter-conda-python.git

Cela vous demandera des informations de base sur le paquet que vous voulez créer. Puis changez dans votre repo

cd myrepo

2. Construisez votre paquet

assure-toi conda-build est installé, s'il n'est pas exécuté

conda install conda-build

Assurez-vous de régler le CONDA_BLD_PATH comme mentionné dans anaconda - en utilisant un répertoire racine de conda-build différent - Stack Overflow . Ce sera le répertoire où vous pourrez trouver vos paquets, puis lancez:

conda build conda.recipe

pour construire votre paquet et nettoyer après vous avec

conda build purge

3. Configurez votre propre canal local (pas de téléchargement sur anaconda.org)

Lis

pour aider.

Indexez chaque plate-forme. Peut-être que quelqu'un peut confirmer que cette étape n'est pas nécessaire, car mes versions contiennent déjà le repodata.json. Autrement:

conda index D:\CODE\condamychannel\win-64

Testez si le paquet peut être trouvé avec

conda search -c file:///D:\CODE\condamychannel --override-channels mypackage

ou ajouter le canal à la configuration directement (par environnement)

conda config --add channels file:///D:\CODE\condamychannel

4. Installer (et mettre à jour) le paquet

activate myenv

et

conda install mypackage

Une fois que je change mypackage, je lui donne un nouveau numéro de version dans meta.yaml et setup.py et construire le paquet avec conda build conda.recipe. La mise à jour est tout simplement

conda update mypackage

Voyez si votre paquet fonctionne:

python
>>> import cli from mypackage
>>> cli.cli()
CLI template

Ce n'est peut-être pas la meilleure façon, mais je n'ai pas trouvé de tutoriel contenant toutes les étapes décrites ci-dessus.

17
Michael

Si vous installez le paquet conda build (et que vous avez un paquet, pas seulement un script), vous pouvez l'installer en mode "éditable":

conda develop .

(en partant du répertoire avec votre script). Ceci est très similaire au mode "editable" de pip

pip install -e .

L’une ou l’autre approche vous permet de désinstaller des paquets avec

conda develop -u .

ou

pip uninstall .

Si vous ne disposez que d'un script (pas d'un package), vous pouvez modifier ou définir la variable d'environnement PYTHONPATH pour inclure le répertoire avec le script.

6
darthbith

J'avais une fonction wrapper que je devais appeler plusieurs fois sur différents scripts. Alors, j'ai copié ce fichier wrappers.py Dans le paquet de site Anaconda dossier. Sur mon ordinateur, il se trouvait à: C:\ProgramData\Anaconda3\Lib\site-packages . Ensuite, chaque fois que j'avais besoin de wrappers.py, Je l'importais simplement dans mes scripts, comme ceci:

import wrappers

Si vous voulez vous assurer que l'importation a réussi, vous pouvez sélectionner Anaconda comme environnement de développement dans votre IDE), puis appeler Intellisense après l'importation: from wrappers import (intellisense suggestions). Ou vous pouvez aussi utiliser IDLE:

>>> import wrappers
>>>(if you get this Prompt, this means the import was successful).

L'intégration Conda n'est possible que si vous créez chaînes personnalisées . C'est parce que conda recherche les paquets aux emplacements suivants (en fonction de votre système d'exploitation) et pour dire à conda de rechercher votre module à certains emplacements, vous devez installer conda-build Pour créer un canal personnalisé:

- https://repo.continuum.io/pkgs/main/win-64
- https://repo.continuum.io/pkgs/main/noarch
- https://repo.continuum.io/pkgs/free/win-64
- https://repo.continuum.io/pkgs/free/noarch
- https://repo.continuum.io/pkgs/r/win-64
- https://repo.continuum.io/pkgs/r/noarch
- https://repo.continuum.io/pkgs/pro/win-64
- https://repo.continuum.io/pkgs/pro/noarch
- https://repo.continuum.io/pkgs/msys2/win-64
- https://repo.continuum.io/pkgs/msys2/noarch

Si vous voulez éviter de créer un repo/canal, alors une simple importation comme ci-dessus devrait faire l'affaire. De plus, si vous apportez des modifications à votre module et le sauvegardez, vous aurez toujours le dernier import dans vos scripts.

1
amanb