如果我有一棵像这样的树:
├── project
│ ├── package
│ │ ├── __init__.py
│ │ ├── setup.py
├── env
└── setup.py
有没有一种方法可以将嵌套的setup.py包含在顶部setup.py的安装中?我想避免这种情况:
pip install -e . ; cd project/package ; pip install -e .
答案 0 :(得分:0)
解决方案是拥有两个单独的项目:一个主项目(通常是一个应用程序)和一个子项目(通常是一个库)。主应用程序对库有依赖性。
setup.py
主项目可以具有以下结构:
your_app/
|-- setup.py
ˋ-- src/
ˋ-- your_app/
|-- __init__.py
|-- module1.py
ˋ-- ...
您的应用程序的setup.py
可以是:
from setuptools import find_packages
from setuptools import setup
setup(
name='Your-App',
version='0.1.0',
install_requires=['Your-Library'],
packages=find_packages('src'),
package_dir={'': 'src'},
url='https://github.com/your-name/your_app',
license='MIT',
author='Your NAME',
author_email='your@email.com',
description='Your main project'
)
您会注意到:
src
目录中,但这是可选的。很多项目都没有。子项目可以具有以下结构:
your_library/
|-- setup.py
ˋ-- src/
ˋ-- your_library/
|-- __init__.py
|-- lib1.py
ˋ-- ...
您图书馆的setup
可以是:
from setuptools import find_packages
from setuptools import setup
setup(
name='Your-Library',
version='0.1.0',
packages=find_packages('src'),
package_dir={'': 'src'},
url='https://github.com/your-name/your_library',
license='MIT',
author='Your NAME',
author_email='your@email.com',
description='Your sub-project'
)
为您的应用程序创建一个virtualenv并激活它
进入your_library/
目录并运行:
pip install -e .
然后,进入your_app/
目录并运行:
pip install -e .
您现在可以编写代码了。玩得开心!
请参见Hitchhiker's Guide to Python:“构建项目”。