无法使用' pip install . '安装自己的包



我有一个带有setup.py文件的包,该文件导入外部包(如numpyCython),以便在安装期间构建包。下面是我的setup.py文件的顶部:

#!/usr/bin/env python3
import os
import sys
from Cython.Build import cythonize
from Cython.Distutils import build_ext
import numpy as np
from setuptools import find_packages, setup, Extension

我想在我当前的虚拟环境中安装我的包(我使用mamba)。为此,我运行

pip install -e .

但是,我得到这个错误:

File "/tmp/pip-build-env-u_xs09i6/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 335, in run_setup
exec(code, locals())
File "<string>", line 5, in <module>
ModuleNotFoundError: No module named 'Cython'

我验证的事情

已验证的python正在工作

我知道Cython已经安装并且正在工作,因为我可以从python会话中导入它:

❯ python
Python 3.9.15 | packaged by conda-forge | (main, Nov 22 2022, 15:55:03)
[GCC 10.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import Cython
>>>

我还通过打印可执行路径(sys.executable)验证了会话和pip install都运行相同的python。

注释掉cython

import我在setup.py中删除了import Cython语句,只是为了看看pip install -e .中发生了什么,但现在它找不到numpy包,这导致我认为在没有发现环境的地方发生了一些奇怪的事情,即使它在其中运行……

用不同的方法安装我的包

当我使用python setup.py --develop安装我的包时,它工作了!

但是我需要pip install命令工作,因为我使用的部署系统运行pip

经过大量的试验和错误,并从头开始,结果证明文件pyproject.toml是罪魁祸首....

根据文档,该文件应该列出构建时依赖项,因为该文件的存在告诉pip使用隔离的构建环境。当我将这些依赖项添加到文件中时:

[build-system]
requires = ["setuptools ~= 67.0.0", "cython ~= 0.29.0", "numpy ~= 1.23.5"]

一切正常…

相关内容

  • 没有找到相关文章

最新更新