我有一个文件mysql.py
,我几乎所有的项目都使用它。由于我不想将相同的文件复制并粘贴到每个项目中,因此我编写了一个模块 - 将来可能是一个包。
问题
如何将本地模块添加到我的 conda 环境中,并在更改mysql.py
中的某些内容时自动更新或监视它?如何对包裹做同样的事情?
我想避免设置本地频道/存储库,而只引用带有mysql.py
的文件夹。
如果您安装了 conda 构建包(并且您有一个包,而不仅仅是一个脚本),则可以在"可编辑"模式下安装:
conda develop .
(使用脚本从目录运行)。这与 pip 的"可编辑"模式非常相似
pip install -e .
任一方法都允许您使用任一方法卸载包
conda develop -u .
或
pip uninstall .
如果只有一个脚本(而不是包),则可以编辑或设置PYTHONPATH
环境变量以包含脚本的目录。
虽然前面的答案正在做我需要的,但我只想展示我将使用什么。由于无论如何我计划了解康达包......
0. 良好的来源
- 迈克尔·萨拉汉 - 使包装和包装"正常工作" |优酷
- 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.yaml
和setup.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
。