我有一个我想要构建的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.
```
那么,解决这个问题的正确方法是什么?
答案 0 :(得分:-2)
我相信您的问题在此处得到确认:Importing files from different folder
基本上,python只查找当前工作目录中的模块。由于/src
不是模块,因此不会继续查看。
一旦可能的解决方案是将/src
目录转换为模块,然后setup_utils
可以是其中的子模块。要将src
转换为模块,只需添加一个空的__init__.py
文件。
然后您可以在脚本中将其from src.mypackage import setup_utils