如何将 conda 骨架与未上传到 pypi 的包一起使用?

Posted

技术标签:

【中文标题】如何将 conda 骨架与未上传到 pypi 的包一起使用?【英文标题】:How can I use conda skeleton with packages that are not uploaded to pypi? 【发布时间】:2016-08-18 18:43:32 【问题描述】:

我正在尝试使用 conda 骨架为一些未上传到 pypi 的 python 包构建 conda 包。

我无法将它们上传到 pypi,也不想部署本地 pypi 服务器。它们存储在本地机器上,是最近构建的结果,现在我也想构建它们的 conda 包。

我该怎么做?我为--pypi-url 尝试了各种选项,但我得到了OSError: unsupported XML-RPC protocol,它告诉我骨架需要一个真正的PYPI,它不能真正处理本地存储库。 PIP 可以毫无问题地处理本地目录。

有什么方法可以解决这个问题?

【问题讨论】:

这是一个很好的问题,但是如果你有一个像样的 setup.py 文件,那么有一天你甚至不必使用骨架。 github.com/conda/conda-build/issues/794 【参考方案1】:

您实际上不必使用 conda 骨架。我相信您在 conda env 中构建了一个模块/包,并且您想要打包它。如果是这样,那么构建一个 meta.yaml 文件和一个 build.sh (macOS) 就足够了。

例如: 假设您有一个名为 condabuild_sample 的项目。

cd condabuild_sample

使用您喜欢的编辑器并创建一个新文件 meta.yaml 我使用 vim

vi meta.yaml

*更新 meta.yaml:

package:
     name: <your package name>
     version: <ideally your git version>

source:
     git_path: <git link> 
requirements:
     run:
         - <a list of project import requirements>
about:
     home: <project home>
     license: <custom license file>*

其实只需要tag:package。休息一下,您可以根据您的项目需求进行自定义。

然后创建另一个文件 build.sh,并为您的包提供构建说明。 build.sh 作为 bash 执行。但是您可以将其留空以进行学习和测试。

获得 meta.yaml 和 bash.sh 后,运行以下命令

conda build condabuild_sample

如果没有错误,包将被添加到您的 conda 设置中的目录中。成功完成此步骤后,

conda install --use-local condabuild_sample

这将添加到本地可用的 conda 包列表中。 现在运行,确认,

conda 列表

您会发现包含 channel = local 的软件包。

您也可以使用 anaconda 客户端上传到 anaconda。

我使用的参考链接: Conda Skeleton Example

【讨论】:

我要补充,the conda build syntax 其中第一个参数是 RECIPE_PATH

以上是关于如何将 conda 骨架与未上传到 pypi 的包一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

Conda 骨架 pypi 因 pmdarima 失败——AttributeError numpy disutils

怎么将自己写的包打包上传到PyPi供其他人下载

如何将原始 Python 包上传到 PyPI?

如何使用 twine 将新版本的项目上传到 PyPI?

conda 是不是从使用 pip install 安装的 pypi 更新软件包?

上传到 PyPi 返回无效的 URI