如何通过conda安装我自己的python模块(包)并观察其更改

Mic*_*ael 23 python module package anaconda miniconda

我有一个文件mysql.py,几乎在我的所有项目中都使用它.由于我不想将相同的文件复制并粘贴到每个项目中,我编写了一个模块 - 将来可能是一个包.

如何在我的conda环境中添加本地模块,并在更改内容时自动更新或观看mysql.py?如何为包裹做同样的事情?

我想避免设置本地频道/存储库,只是引用该文件夹mysql.py.

Mic*_*ael 19

虽然之前的答案正在做我需要的,但我只想展示我将要使用的内容.既然我计划了解conda包装......

好消息来源

  1. Michael Sarahan - 让包装和包装"正常工作"| YouTube的
  2. GitHub - audreyr/cookiecutter:一个命令行实用程序,它从cookiecutters(项目模板)创建项目 并使用以下模板之一:

1.使用cookiecutter为conda创建一个python包模板

conda install -c conda-forge cookiecutter
Run Code Online (Sandbox Code Playgroud)

现在切换到要初始化包的目录,然后执行以下操作:

cookiecutter https://github.com/conda/cookiecutter-conda-python.git
Run Code Online (Sandbox Code Playgroud)

这将询问有关您要创建的包的一些基本信息.然后换成你的回购

cd myrepo
Run Code Online (Sandbox Code Playgroud)

2.构建你的包

确保conda-build已安装,如果没有安装

conda install conda-build
Run Code Online (Sandbox Code Playgroud)

确保设置anaconda中CONDA_BLD_PATH提到的- 使用不同的conda-build根目录 - Stack Overflow.这将是您可以找到包的目录,然后运行:

conda build conda.recipe
Run Code Online (Sandbox Code Playgroud)

建立你的包裹并在你用完后清理

conda build purge
Run Code Online (Sandbox Code Playgroud)

3.设置您自己的本地频道(不上传到anaconda.org)

求助.

索引每个平台.也许有人可以确认不需要这一步,因为我的构建已经包含了repodata.json.除此以外:

conda index D:\CODE\condamychannel\win-64
Run Code Online (Sandbox Code Playgroud)

测试是否可以找到包

conda search -c file:///D:\CODE\condamychannel --override-channels mypackage
Run Code Online (Sandbox Code Playgroud)

或直接将通道添加到配置(每个环境)

conda config --add channels file:///D:\CODE\condamychannel
Run Code Online (Sandbox Code Playgroud)

4.安装(和更新)包

activate myenv
Run Code Online (Sandbox Code Playgroud)

conda install mypackage
Run Code Online (Sandbox Code Playgroud)

一旦我改变了mypackage,我就给它一个新的版本号meta.yaml并用setup.py它构建包conda build conda.recipe.更新很简单

conda update mypackage
Run Code Online (Sandbox Code Playgroud)

看看你的包是否有效:

python
>>> import cli from mypackage
>>> cli.cli()
CLI template
Run Code Online (Sandbox Code Playgroud)

这可能不是最佳方式,但我找不到包含上面概述的所有步骤的教程.

  • 为什么您选择不使用“condadevelop”或“pip-e”? (5认同)
  • 如果可以做得这么麻烦,为什么还要用简单的方法来做呢! (2认同)

dar*_*ith 8

如果安装conda构建软件包(并且有一个软件包,而不仅仅是一个脚本),则可以“可编辑”模式安装:

conda develop .
Run Code Online (Sandbox Code Playgroud)

(从带有脚本的目录运行)。这与点子的“可编辑”模式非常相似

pip install -e .
Run Code Online (Sandbox Code Playgroud)

两种方法都可以让您使用以下两种方法卸载软件包

conda develop -u .
Run Code Online (Sandbox Code Playgroud)

要么

pip uninstall .
Run Code Online (Sandbox Code Playgroud)

如果只有脚本(不是软件包),则可以编辑或设置PYTHONPATH环境变量以将目录包括在脚本中。

  • 请注意,“condadevelop”并未得到积极维护,并且有人请求弃用或删除它,请参阅https://github.com/conda/conda-build/issues/4251。所以**2021年不建议使用`condadevelop`。 (7认同)
  • 如果您使用 conda,则应该使用 `condadevelopment`。我在使用 `condadevelop` 时遇到的唯一小问题是它不会安装 `console_scripts`,而 `pip install -e` 会安装。不过,这可能已在 conda 中修复。 (2认同)

ama*_*anb 1

我有一个包装函数,我必须在不同的脚本上多次调用该函数。因此,我将该文件复制wrappers.py到 Anaconda site-packages文件夹中。在我的计算机上,该位置位于:C:\ProgramData\Anaconda3\Lib\site-packages。然后,每当我需要时wrappers.py,我只需将其导入到我的脚本中,如下所示:

import wrappers
Run Code Online (Sandbox Code Playgroud)

如果您想确保导入成功,您可以在 IDE 中选择 Anaconda 作为开发环境,然后在导入后调用 Intellisense:from wrappers import (intellisense suggestions)。或者你也可以使用 IDLE:

>>> import wrappers
>>>(if you get this prompt, this means the import was successful).
Run Code Online (Sandbox Code Playgroud)

仅当您创建自定义通道时,Conda 集成才可能实现。这是因为 conda 在以下位置搜索包(基于您的操作系统),并告诉 conda 在特定位置搜索您的模块,您必须安装conda-build以创建自定义通道:

- 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
Run Code Online (Sandbox Code Playgroud)

如果您想避免创建存储库/通道,那么如上所述的简单导入就可以完成这项工作。此外,如果您对模块进行任何更改并保存它,您将始终拥有最新的import脚本。