【问题标题】:setup.py installing local packagessetup.py 安装本地包
【发布时间】:2019-05-09 14:31:39
【问题描述】:

如果我有一棵看起来像这样的树:

├── project
│   ├── package
│   │   ├── __init__.py
│   │   ├── setup.py
├── env
└── setup.py

有没有办法在顶部 setup.py 的安装中包含嵌套的 setup.py?我想避免这种情况:

pip install -e . ; cd project/package ; pip install -e .

【问题讨论】:

  • 奇怪的问题。为什么你首先有两个setup.py?将projectpackage 保存在单独的存储库中会更典型。
  • 我希望能够在项目中本地拥有包/仓库

标签: python python-3.x pip setup.py


【解决方案1】:

解决方案是拥有两个独立的项目:一个主项目(通常是一个应用程序)和一个子项目(通常是一个库)。主应用程序依赖于库。

树形结构和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'
)

你可以注意到:

  • 您的应用程序名称可能与您的程序包名称略有不同;
  • 此包依赖于“Your-Library”,定义如下;
  • 您可以将源代码放在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:“构建您的项目”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 2016-06-10
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多