使用`pip install -e .`安装的本地包无法导入。

3

我正在开发一个软件包,并编写了几个脚本来使用这个软件包。我尝试使用 pip install -e . 命令以开发者模式安装软件包,但是在我的脚本中无法导入该软件包。以下是我的文件结构,其中 singlepixel 是我正在开发的软件包。

├── setup.py
├── singlepixel
│   ├── acquisition.py
│   ├── metadata.py
│   └── __init__.py
├── scripts
│   ├── script1.py
│   └── script2.py

我的 __init__.py 文件的结构如下:

from .acquisition import init, setup, acquire, disconnect
from .metadata import MetaData, AcquisitionParameters

我的setup.py文件如下:

from setuptools import setup, find_packages

setup(
    name='singlepixel',
    version='0.0.1',
    author='gbm',
    package_dir={"": "singlepixel"},
    packages=find_packages(where="singlepixel"))

据我的理解,在我的 script1.py 中,我应该可以简单地进行导入语句,例如 from singlepixel import *,但实际上它不起作用,并且我得到了以下错误信息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'singlepixel'

此外,似乎我无法在任何地方导入该软件包,尽管我正在使用Anaconda环境。根据我的理解,当使用这个环境时,我应该能够像使用其他通过pip安装的软件包一样,在任何地方导入我的软件包。请注意保留HTML标记。pip install

尝试运行 pip install . 命令,并检查是否成功安装。 - Ceres
安装成功了,但我仍然收到相同的错误。不过无论如何,我想使用“-e”进行安装,以便能够对软件包进行更改。 - Guilherme B.M.
太好了,这是个很棒的问题,我为此奋斗了几个小时...谢谢! - kovalensue
1个回答

4
你在 singlepixel/ 目录下没有任何包,该目录本身就是一个包。因此请删除。
package_dir={"": "singlepixel"},

并且改变

packages=find_packages(where="singlepixel"))

to

packages=find_packages())

你救了我一命,否则我就要疯了...谢谢。 - kovalensue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接