【问题标题】:Python: pip installs sub-packages in root dirPython:pip 在根目录中安装子包
【发布时间】:2011-05-07 06:14:34
【问题描述】:

我有这样的结构:

setup.py
package
    __init__.py
    sub_package
        ___init__.py
    sub_package2
        __init__.py

如果我通过 setup.py install 安装包,那么它可以正常工作(通过将整个包复制到 site-packages 目录):

site_packages
    package
        sub_package
        sub_package2

但是如果我运行 pip install package,那么 pip 会将每个子包安装为独立的包:

site-packages
    package
    sub_package
    sub_package2

我怎样才能避免这种情况?我使用 setuptools 中的 find_packages() 来指定包。

【问题讨论】:

  • 可以粘贴 setup.py 的内容吗?

标签: python setuptools distutils pip


【解决方案1】:

注意:此答案不再有效,仅出于历史原因保留,现在正确的答案是使用 setuptools,更多信息https://mail.python.org/pipermail/distutils-sig/2013-March/020126.html


首先我会建议放弃 setuptools :

并使用distutils(即standard mechanism to distribute Python packages)或distribute,您也有distutils2,但我认为还没有准备好,对于新标准here是如何使用的指南写一个 setup.py。

对于您的问题,distutils 中不存在 find_packages(),您必须像这样添加您的包:

setup(name='package',
      version='0.0dev1',
      description='blalal',
      author='me',
      packages=['package', 'package.sub_package', 'package.sub_package2'])

如果你有很多包和子包,你将不得不编写一些代码来创建包列表here 是 Django 源代码中的一个示例。

我认为使用 distutils 可以帮助您解决问题,我希望这可以帮助:)

【讨论】:

  • 谢谢。如果没有办法继续使用 setuptools,我会尝试 distutils。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 2014-06-02
  • 1970-01-01
  • 2012-10-08
  • 2017-09-01
  • 2015-08-29
  • 2023-03-10
相关资源
最近更新 更多