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

Posted

技术标签:

【中文标题】如何通过 conda 安装我自己的 python 模块(包)并观察它的变化【英文标题】:How to install my own python module (package) via conda and watch its changes 【发布时间】:2018-09-03 14:25:40 【问题描述】:

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

问题

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

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

【问题讨论】:

你试过conda develop还是pip -e 【参考方案1】:

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

conda develop .

(从您的脚本所在的目录运行)。这与 pip 中的“可编辑”模式非常相似

pip install -e .

任何一种方法都可以让您卸载任何一种软件包

conda develop -u .

pip uninstall .

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

【讨论】:

你怎么知道pip -e vs conda develop 如果你使用 conda,你应该使用conda develop。我遇到conda develop 的唯一小问题是它不会安装console_scripts,而pip install -e 会。不过,这可能已经在 conda 中修复了。 如何检查是否已安装?我尝试运行conda list,但我的项目/包似乎没有任何熟悉的东西出现。 它应该出现在conda list 的输出中。您是否正确配置了setup.py 文件? pip install -e 有效吗? 请注意,conda develop 没有得到积极维护,并且有人要求弃用或删除它,请参阅github.com/conda/conda-build/issues/4251。所以**2021年不建议使用conda develop【参考方案2】:

虽然前面的答案正在做我需要的,但我只想展示我将使用什么。因为无论如何我计划学习 conda 包......

0。良好的来源

    Michael Sarahan - Making packages and packaging "just work" | YouTube GitHub - audreyr/cookiecutter: A command-line utility that creates projects from cookiecutters (project templates) 并使用以下模板之一: GitHub - audreyr/cookiecutter-pypackage: Cookiecutter template for a Python package. GitHub - conda/cookiecutter-conda-python: A cookiecutter template for conda packages using Python(这是我用的)

1。使用 cookiecutter 为 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 - using a different conda-build root directory - Stack Overflow 中的说明设置CONDA_BLD_PATH。这将是您可以找到软件包的目录,然后运行:

conda build conda.recipe

构建你的包并在你之后清理

conda build purge

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

阅读

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

寻求帮助。

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

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

测试是否可以找到包

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

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

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

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

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

【讨论】:

你为什么选择不使用conda developpip -e 如果可以做得这么麻烦,为什么还要用简单的方法呢! 我尝试按照此处的说明进行操作,但它在“cookiecutter github.com/conda/cookiecutter-conda-python.git”处表示未安装 git。我试过 conda install git 但我得到了同样的信息。 我实际上比conda develop 更喜欢这种方法,因为您还可以在环境 YAML 文件等中包含自己的模块。此外,通过这种方式升级到成熟的公共模块也很简单。 附录:在 conda 环境中使用 pip 是可行的,但有很多关于此问题的潜在问题的报告。它似乎适用于新环境,但更新可能会产生不一致。就我个人而言,我尽量避免在 conda 环境中使用 pip。【参考方案3】:

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

import wrappers

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

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

仅当您创建 custom channels 时,才能进行 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

【讨论】:

以上是关于如何通过 conda 安装我自己的 python 模块(包)并观察它的变化的主要内容,如果未能解决你的问题,请参考以下文章

如何托管我自己的私有 conda 存储库?

python:使用 conda 安装破折号

如何在非root的服务器账户下配置python科研环境

如何在非root的服务器账户下配置python科研环境

如何在非root的服务器账户下配置python科研环境

如何让 conda 使用自己的 gcc 版本?