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

问题描述 投票:0回答:3

我有一个文件

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

问题

如何将本地模块添加到我的 conda 环境中,并在我更改

mysql.py
中的某些内容时自动更新或监视它?如何对包裹做同样的事情?

我想避免设置本地频道/存储库,而仅使用

mysql.py
引用文件夹。

python module package anaconda miniconda
3个回答
59
投票

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

conda develop .

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

pip install -e .

无论哪种方法都可以让您卸载软件包

conda develop -u .

pip uninstall .

如果您只有一个脚本(不是包),您可以编辑或设置

PYTHONPATH
环境变量以包含脚本所在的目录。

请注意,

conda develop
conda-build
软件包的一部分,您可以使用以下命令安装:
conda install conda-build


50
投票

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

0。好资源

  1. Michael Sarahan - 使包装和包装“正常工作”| YouTube
  2. GitHub - audreyr/cookiecutter:从 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 - 使用不同的 conda-build 根目录 - Stack Overflow
中所述设置 CONDA_BLD_PATH。这将是您可以找到包的目录,然后运行:

conda build conda.recipe

构建你的包并在你使用后清理

conda build purge

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

阅读

为每个平台建立索引。也许有人可以确认不需要此步骤,因为我的构建已经包含

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


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


1
投票
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

    

© www.soinside.com 2019 - 2024. All rights reserved.