Python 在 setup.py 中导入 src/package.module



我有以下想要构建的python包的目录结构(python3.4(

```
/project/src/mypackage/__init__.py
/project/src/mypackage/module.py
/project/src/mypackage/setup_utils.py
/project/setup.py
```

setup_utils.py中有一些有用的代码,我想在setup.py顶部导入。如果我不添加sys.path.append('src'),我会得到ImportError

```
$ cat setup.py
from setuptools import setup
from mypackage import setup_utils
cmdclass = setup_utils.cmdcass
...
$ python setup.py install
...
ImportError: No module named 'mypackage'
...
```

现在,如果我确实添加了sys.path.append('src'),我没有得到覆盖Coverage.py warning: Module mypackage was previously imported, but not measured.

```
$ cat setup.py
import sys
sys.path.append('src')
from setuptools import setup
from mypackage import setup_utils
cmdclass = setup_utils.cmdcass
...
$ python setup.py install
$ coverage ...
Coverage.py warning: Module mypackage was previously imported, but not measured.
```

那么,解决此问题的正确方法是什么?

我相信

您的问题已在此处确定: 从其他文件夹导入文件

基本上,python只在当前工作目录中查找模块。由于/src不是模块,因此不会继续进一步查找。

一旦可能的解决方案是将/src目录转换为模块,然后setup_utils可以成为其中的子模块。为了将src转换为模块,只需添加一个空的__init__.py文件。

然后,您可以将其导入脚本中,from src.mypackage import setup_utils

相关内容

最新更新