pip安装可编辑包会产生ModuleNotFoundError

时间:2019-08-28 15:23:51

标签: python python-3.x pip package python-venv

由于导入问题,我已按照here所示的步骤将我的Python项目安装为可编辑的pip软件包。基本上,这需要从我的项目根目录运行pip install -e .。项目的名称为'myproject',setup.py的配置如下:

from setuptools import setup, find_packages

setup(name='myproject', version='1.0', packages=find_packages())

项目结构如下:

.
├── myproject
│   ├── core
│   │   ├── core.py
│   │   └── __init__.py
│   └── tests
│       ├── __init__.py
│       └── test_one.py
├── setup.py
└── env
    └── ...

激活venv后,我得到以下输出:

(env) [root@localhost /]$ python -V
Python 3.6.3

(env) [root@localhost /]$ pip -V
pip 9.0.1 from /myproject/venv/lib64/python3.6/site-packages (python 3.6)

但是,在运行解释会话时,我会遇到以下情况:

(env) [root@localhost /]$ python
>>> import myproject
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'myproject'
>>> from myproject.core import *
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'myproject'

启动另一个解释性会话并自己运行setuptools东西会导致:

(env) [root@localhost /]$ python
>>> from setuptools import find_packages
>>> find_packages()
>>> ['core', 'tests']

我还尝试了其他安装方法,包括:

python -m pip install -e .

仍然出现相同的问题。最后,我可以执行以下操作:

(env) [root@localhost /] pip list installed | grep myproject
myproject (1.0, /myproject)

更新:如here所示,并如下面的@ Fletchy1995所述,更改目录结构,使其类似于:

.
├── setup.py
├── myproject
│   ├── core
│   │   ├── core.py
│   │   └── __init__.py
│   └── tests
│       ├── __init__.py
│       └── test_one.py
├── __init__.py
└── env
    └── ...

然后将setup.py修改为:

from setuptools import setup

setup(name='myproject', version='1.0', packages=['myproject'])

从顶级目录运行pip install -e .似乎已经解决了该问题。但是在以前的情况下,即使加载的软件包包括'myproject'的所有子软件包,为什么我仍然不能做类似的事情:

(env) [root@localhost /]$ python
>>> from myproject.core import *

在“ pip中列出了'myproject'?

0 个答案:

没有答案