Conda 自定义包安装到错误的 python 版本目录中

maj*_*588 5 python packaging anaconda conda miniconda

构建 conda 包并将其安装到新的空环境中后,我的包无法导入,因为它被放置到 python3.8/site-packages 目录中,而环境的 python 可执行文件和所有包依赖项都在 python3.7 下。

从空环境开始:

conda create -n myenv

conda install --use-local mypackage

安装结果如下:

~/miniconda3/envs/myenv/lib/python3.8/site-packages
  |-mypackage/
  |-mypackage-0.0.0-py3.8.egg.info/

~/miniconda3/envs/myenv/lib/python3.7/site-packages
  |- all of the dependencies...
Run Code Online (Sandbox Code Playgroud)

生成的 conda env 也最终将其 python 版本设置为 3.7。显然,现在当我打开 python 控制台并尝试导入我的包时,它失败了。令人困惑的是,我的 meta.yml 中确实有一个导入测试,用于测试导入我的包,该包似乎在 conda 构建过程中通过了。

如果我将我的 meta.yml python 版本固定到它python=3.7而不是python>=3.7它的工作原理。我的包最终与其他所有内容一起安装在 python3.7/site-packages 中,并且工作正常。


我的 meta.yml 中的相关构建要求:

requirements:
    build:
        - setuptools
        - nodejs>=14.5.0
        - mkdocs>=1.1.2
        - mkdocs-material>=5.4.0
        - mkdocs-material-extensions>=1.0
    host:
        - python
    run:
        - python>=3.7
        - rabbitmq-server>=3.7.16
        - pika>=1.1.0
        - pyzmq>=19.0.1
        - pyyaml>=5.3.1
        - numpy>=1.18.5
        - sqlalchemy>=1.3.18
        - sqlite>=3.28.0
        - netifaces>=0.10.9
        - psutil>=5.7.0
        - uvloop>=0.14.0
        - numexpr>=2.7.1
        - fastapi>=0.59.0
        - uvicorn>=0.11.3
test:
    imports:
        - mypackage
Run Code Online (Sandbox Code Playgroud)

我的 conda 配方 build.sh 中的相关行:

$PYTHON setup.py install
Run Code Online (Sandbox Code Playgroud)