繁体   English   中英

pip安装本地python包后的ModuleNotFoundError

[英]ModuleNotFoundError after pip install local python package

结构:

.
├── application
│   └── runner.py
└── dummyLibrary
    ├── helperFunctions.py
    ├── __init__.py
    └── setup.py

亚军.py:

import dummyLibrary

dummyLibrary.foo()
dummyLibrary.bar()

初始化.py:(空文件)

helperFunctions.py:

def foo():
    print("called foo()")


def bar():
    print("called bar()")

设置.py:

#!/usr/bin/env python
from distutils.core import setup

setup(name='dummyLibrary', version='0.0.1')

在进入 dummyLibrary/ 之后,我尝试使用 pip3 install -e 安装 dummyLibrary。 这是输出:

Defaulting to user installation because normal site-packages is not writeable
Obtaining file:///home/ubuntu/Documents/pythonTest/dummyLibrary
  Preparing metadata (setup.py) ... done
Installing collected packages: dummyLibrary
  Running setup.py develop for dummyLibrary
Successfully installed dummyLibrary-0.0.1

我尝试使用 python3 -m pip install -e 安装 dummyLibrary 。 这是输出:

Defaulting to user installation because normal site-packages is not writeable
Obtaining file:///home/ubuntu/Documents/pythonTest/dummyLibrary
  Preparing metadata (setup.py) ... done
Installing collected packages: dummyLibrary
  Attempting uninstall: dummyLibrary
    Found existing installation: dummyLibrary 0.0.1
    Uninstalling dummyLibrary-0.0.1:
      Successfully uninstalled dummyLibrary-0.0.1
  Running setup.py develop for dummyLibrary
Successfully installed dummyLibrary-0.0.1

在进入 application/ 并运行 python3 runner.py 之后,我得到:

Traceback (most recent call last):
  File "runner.py", line 1, in <module>
    import dummyLibrary
ModuleNotFoundError: No module named 'dummyLibrary'

无论我如何尝试安装我的库

为什么是这样? 附加信息:使用 Ubuntu,不使用虚拟环境。 我尝试安装后重新启动。 没有帮助。

欢迎来到堆栈溢出!

第一件事: __init__.py init__.py 和helperFunctions.py应该在另一个与包同名的嵌套文件夹中。

.
├── application
│   └── runner.py
└── dummyLibrary
    ├── dummyLibrary
    │   ├── __init__.py
    │   └── helperFunctions.py
    └── setup.py

其次,根据你喜欢的runner.py中的代码, __init__.py应该包含以下行来导入helperFunctions.py中的所有函数:

from .helperFunctions import *

最后,您的setup.py还应该包含参数packages作为包中文件夹名称的列表,在这种情况下,参数应该是packages=['dummyLibrary']

PS:将文件和包命名为snake_case而不是camelCase是一种 Python 惯例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM