ChatGPT解决这个技术问题 Extra ChatGPT

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

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

问题

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

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

您尝试了 conda develop 还是 pip -e

d
darthbith

如果您安装 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
D
Dogemore

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

0. 良好的来源

Michael Sarahan - 使包装和包装“正常工作” | YouTube GitHub - audreyr/cookiecutter:从 cookiecutters(项目模板)创建项目并使用以下模板之一的命令行实用程序:GitHub - audreyr/cookiecutter-pypackage:Python 包的 Cookiecutter 模板。 GitHub - conda/cookiecutter-conda-python: 使用 Python 的 conda 包的 cookiecutter 模板(这是我使用的)

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)

创建自定义频道 — Conda 文档

python - 在Windows上将本地频道添加到.condarc - 代码日志

求助。

索引每个平台。也许有人可以确认不需要此步骤,因为我的构建已经包含 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。
a
amanb

我有一个包装函数,我必须在不同的脚本上多次调用它。所以,我将该文件 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