我有一个文件
mysql.py
,我几乎在所有项目中都使用它。由于我不想将相同的文件复制并粘贴到每个项目中,因此我编写了一个模块 - 将来可能是一个包。
如何将本地模块添加到我的 conda 环境中,并在我更改
mysql.py
中的某些内容时自动更新或监视它?如何对包裹做同样的事情?
我想避免设置本地频道/存储库,而仅使用
mysql.py
引用文件夹。
如果您安装了 conda 构建包(并且您有一个包,而不仅仅是一个脚本),则可以以“可编辑”模式安装:
conda develop .
(从包含脚本的目录运行)。这与 pip 的“可编辑”模式非常相似
pip install -e .
无论哪种方法都可以让您卸载软件包
conda develop -u .
或
pip uninstall .
如果您只有一个脚本(不是包),您可以编辑或设置
PYTHONPATH
环境变量以包含脚本所在的目录。
请注意,
conda develop
是conda-build
软件包的一部分,您可以使用以下命令安装:conda install conda-build
虽然前面的答案正在做我需要的事情,但我只是想展示我将使用什么。因为无论如何我都计划了解 conda 包...
conda install -c conda-forge cookiecutter
现在切换到要初始化包的目录,然后执行以下操作:
cookiecutter https://github.com/conda/cookiecutter-conda-python.git
这将要求您提供有关您要创建的包的一些基本信息。然后更改为您的存储库
cd myrepo
确保已安装
conda-build
,如果未运行
conda install conda-build
确保按照
anaconda - 使用不同的 conda-build 根目录 - Stack Overflow中所述设置
CONDA_BLD_PATH
。这将是您可以找到包的目录,然后运行:
conda build conda.recipe
构建你的包并在你使用后清理
conda build purge
阅读
为每个平台建立索引。也许有人可以确认不需要此步骤,因为我的构建已经包含
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.yaml
和 setup.py
中为其指定新版本号,并使用 conda build conda.recipe
构建包。
更新很简单conda update mypackage
看看你的包裹是否有效:
python
>>> import cli from mypackage
>>> cli.cli()
CLI template
这可能不是最佳方法,但我找不到包含上面概述的所有步骤的教程。
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).
仅当您创建自定义通道
时,才可能实现 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
。