如何通过 conda 安装我自己的 python 模块(包)并观察它的变化



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

问题

如何将本地模块添加到我的 conda 环境中,并在更改mysql.py中的某些内容时自动更新或监视它?如何对包裹做同样的事情?

我想避免设置本地频道/存储库,而只引用带有mysql.py的文件夹。

如果您安装了 conda 构建包(并且您有一个包,而不仅仅是一个脚本),则可以在"可编辑"模式下安装:

conda develop .

(使用脚本从目录运行)。这与 pip 的"可编辑"模式非常相似

pip install -e .

任一方法都允许您使用任一方法卸载包

conda develop -u .

pip uninstall .

如果只有一个脚本(而不是包),则可以编辑或设置PYTHONPATH环境变量以包含脚本的目录。

虽然前面的答案正在做我需要的,但我只想展示我将使用什么。由于无论如何我计划了解康达包......

0. 良好的来源

  1. 迈克尔·萨拉汉 - 使包装和包装"正常工作" |优酷
  2. GitHub - audreyr/cookiecutter:一个命令行实用程序,用于从饼干切割器(项目模板)创建项目 ,然后使用以下模板之一:
    • GitHub - audreyr/cookiecutter-pypackage:Python 包的 Cookiecutter 模板。
    • GitHub - conda
    • /cookiecutter-conda-python:使用 Python 的 conda 包的千篇一律的模板(这是我使用的)

1.使用千篇一律的切割器为 conda 创建 python 包模板

conda install -c conda-forge cookiecutter

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

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

这将询问有关要创建的包的一些基本信息。然后更改为您的存储库

cd myrepo

2. 构建您的软件包

确保已安装conda-build如果未运行

conda install conda-build

确保按照 anaconda 中所述设置CONDA_BLD_PATH- 使用不同的 conda-build 根目录 - 堆栈溢出。这将是您可以找到软件包的目录,然后运行:

conda build conda.recipe

构建您的软件包并在您使用后进行清理

conda build purge

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

  • 创建自定义通道 — Conda 文档
  • python - 将本地通道添加到Windows上的.condarc - 堆栈溢出

寻求帮助。

为每个平台编制索引。也许有人可以确认不需要此步骤,因为我的构建已经包含repodata.json.否则:

conda index D:CODEcondamychannelwin-64

测试是否可以找到包

conda search -c file:///D:CODEcondamychannel --override-channels mypackage

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

conda config --add channels file:///D:CODEcondamychannel

4. 安装(和更新)软件包

activate myenv

conda install mypackage

一旦我更改了mypackage,我就会在meta.yamlsetup.py中给它一个新版本号,并使用conda build conda.recipe构建软件包。 更新很简单

conda update mypackage

查看您的软件包是否有效:

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

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

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

import wrappers

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

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

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

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

最新更新