How to install my own python module (package) via conda and watch its changes

前端 未结 3 1454
南旧
南旧 2020-12-12 13:50

I have a file mysql.py, which I use in almost all of my projects. Since I do not want to copy and paste the same file into each of these projects I wrote a modu

相关标签:
3条回答
  • 2020-12-12 14:18

    If you install the conda build package (and you have a package, not just a script), you can install in "editable" mode:

    conda develop .
    

    (running from the directory with your script). This is very similar to the "editable" mode from pip

    pip install -e .
    

    Either approach lets you uninstall packages with either

    conda develop -u .
    

    or

    pip uninstall .
    

    If you just have a script (not a package), you can edit or set the PYTHONPATH environment variable to include the directory with the script.

    0 讨论(0)
  • 2020-12-12 14:34

    While the previous answers are doing what I need, I just want to show what I will be using instead. Since it was my plan to learn about conda packages anyway...

    0. Good sources

    1. Michael Sarahan - Making packages and packaging "just work" | YouTube
    2. GitHub - audreyr/cookiecutter: A command-line utility that creates projects from cookiecutters (project templates) and use one of these templates:
      • GitHub - audreyr/cookiecutter-pypackage: Cookiecutter template for a Python package.
      • GitHub - conda/cookiecutter-conda-python: A cookiecutter template for conda packages using Python (This is what I used)

    1. Create a python package template for conda using cookiecutter

    conda install -c conda-forge cookiecutter
    

    Now change to the directory where you want to initialize your package, then do:

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

    This will ask for some basic information about the package that you want to create. Then change into your repo

    cd myrepo
    

    2. Build your package

    make sure conda-build is installed, if not run

    conda install conda-build
    

    Make sure to set the CONDA_BLD_PATH as mentioned in anaconda - using a different conda-build root directory - Stack Overflow. This will be the directory where you can find your packages, then run:

    conda build conda.recipe
    

    to build your package and clean up after you with

    conda build purge
    

    3. Set up your own local channel (no uploading to anaconda.org)

    Read

    • Creating custom channels — Conda documentation
    • python - add local channel to .condarc on windows - Stack Overflow

    for help.

    Index each platform. Maybe someone can confirm that this step is not needed, as my builds already contain the repodata.json. Otherwise:

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

    Test if the package can be found with

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

    or add the channel to the config directly (per environment)

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

    4. Install (and update) the package

    activate myenv
    

    and

    conda install mypackage
    

    Once I change mypackage, I give it a new version number in meta.yaml and setup.py and build the package with conda build conda.recipe. Updating is simply

    conda update mypackage
    

    See if your package works:

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

    This may not be the optimal way, but I could not find a tutorial that contains all the steps I outlined above.

    0 讨论(0)
  • 2020-12-12 14:42

    I had a wrapper function that I had to call multiple times on different scripts.So, I copied that file wrappers.py to the Anaconda site-packages folder. On my computer this was at: C:\ProgramData\Anaconda3\Lib\site-packages. Then, whenever I needed wrappers.py, I'd just import it in my scripts, like this:

    import wrappers
    

    If you want to make sure that the import was successful, you could either select Anaconda as your dev environment in your IDE and then invoke the Intellisense after import: from wrappers import (intellisense suggestions). Or you could also use IDLE:

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

    Conda integration is only possible if you create custom channels. This is because conda searches for packages in the following locations(based on your OS) and to tell conda to search for your module at certain location(s), you must install conda-build to create a custom channel:

    - 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
    

    If you want to avoid creating a repo/channel, then a simple import as above should do the job. In addition, if you make any changes to your module and save it, you will always have the latest import in your scripts.

    0 讨论(0)
提交回复
热议问题