[英]python ModuleNotFoundError after running pip install - e .
[英]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.