我试图用python设置一个包含子包的包。这是我目前拥有的树结构:
myPackage
├── __init__.py
├── mySubPackage1
│ ├── foo2.py
│ ├── foo.py
│ └── __init__.py
├── mySubPackage2
│ ├── bar2.py
│ ├── bar.py
│ └── __init__.py
└── setup.py
所有__init__.py
都是空的。这是我的setup.py
:
from distutils.core import setup
if __name__ == "__main__":
setup(
name='myPackage',
package_dir = {
'mySubPackage1': 'mySubPackage1',
'mySubPackage2': 'mySubPackage2'},
packages=['mySubPackage1', 'mySubPackage2'],
)
问题是,当我从myPackage
运行python setup.py install
时,子包被安装到dist-packages
:
/usr/local/lib/python2.7/dist-packages/mySubPackage1
/usr/local/lib/python2.7/dist-packages/mySubPackage2
我想问题是我的setup.py
,但我不知道如何解决它?它应该在myPackage
的父目录中吗?如果是,那么当我使用python setup.py sdist
将包打包到zip
中时,它是如何工作的?
只需使用
setuptools
而不是distutils
,它有find_packages
正是为了这个目的:TL;DR:将包嵌套在另一个同名的包中。
我将超级包
myPackage
嵌套在一个目录(同名)中,如下所示:然后,我更新了
setup.py
:现在,
sudo python setup.py install
的行为如我所料,在dist-packages
中,我有以下结构:还有一个鸡蛋锉。
这几乎是好的。现在由于
/
的使用,它不是独立于平台的。为了解决这个问题,我编辑了setup.py
,如下所示:相关问题 更多 >
编程相关推荐