package_dir 的空字符串键在 setup.py 中有什么作用?

cod*_*ter 4 python setuptools gradle

我有一个setup.py看起来像这样的文件:

import setuptools

from distgradle import GradleDistribution

setuptools.setup(
  distclass=GradleDistribution,
  package_dir={'': 'src'},
  packages=setuptools.find_packages('src'),
  include_package_data=True,
  namespace_packages=['foo'],
  entry_points={
    'console_scripts': [
      'first = foo.something.first:main',
      'second = foo.somethingelse.second:main',
    ],
  },
)
Run Code Online (Sandbox Code Playgroud)

有什么意义package_dir={'': 'src'}?为什么我们有一个空字符串作为键?

aka*_*uko 7

当您在根级别有多个目录并且模块驻留在一个目录下时,您可以将该目录定义为根包,然后packages将在该目录中查找提供给命名参数的所有包。Python 的官方文档对此进行了很好的描述:

https://docs.python.org/2/distutils/setupscript.html#listing-whole-packages

在这里,如果代码驻留在lib目录下,那么定义package_dir = {'': 'lib'}&packages = ['foo']将意味着您告诉该系统foolibielib/foo/__init__.py存在下查找模块。