【问题标题】:Conda environment with pip -e : ModuleNotFoundError: No module named 'setuptools'带有 pip -e 的 Conda 环境:ModuleNotFoundError: No module named 'setuptools'
【发布时间】:2021-05-24 04:56:18
【问题描述】:

我有一个包含一些标准依赖项的 conda 文件,然后我想使用 pip -e 安装一个客户包。我的environment.yml 看起来像这样:

name: my_env
channels:
  - conda-forge
  - defaults

dependencies:
  - python==3.7.0 
  - pip==19.3.1
  - pip:
    - -e ./path_to_my_package

当我尝试通过运行 conda env create -f conda.yml 创建环境时,环境创建失败并出现错误:ModuleNotFoundError: No module named 'setuptools'。这很令人惊讶,我在 conda 包和我的 Ubuntu 中安装了 setuptools。

conda 尝试运行并引发错误的命令是:

/home/path/to/my/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/path/to/my/package/setup.py'"'"'; __file__='"'"'/pat/to/my/package/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps

当我在conda create 命令之外运行此命令时,它运行良好。

我的setup.py 看起来很简单,就是:

import setuptools

if __name__ == "__main__":
    setuptools.setup()

我惊呆了。有人可以帮忙吗?

编辑

我使用的是适用于 Linux 的 Windows 子系统(版本 1)

【问题讨论】:

  • setuptoolspip 的显式依赖,所以是的,非常奇怪。您可以在依赖项部分使用单个 = 而不是 == 尝试吗?从技术上讲,双等号不在 Conda 规范中(即 Pip 语法),但不确定这是否会有所不同。

标签: python pip anaconda conda


【解决方案1】:

您的包裹中是否有适当的部分,例如 pyproject.toml 文件中这样的

[metadata]
name = "mypackage"
version = "0.0.1"

[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

另见setuptools(注意[metadata]中的引号)

【讨论】:

  • 这就是解决方案!我的包中有pyproject.toml 文件,但没有更新[build-system] 部分。在那里添加 setuptools - 正如您所建议的那样 - pip install 工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 2022-12-27
  • 2022-12-27
  • 2022-12-19
  • 2021-07-30
相关资源
最近更新 更多