【问题标题】:How to include additional files into a package?如何将其他文件包含到包中?
【发布时间】:2021-12-22 13:32:03
【问题描述】:

如何将不是用 python 编写的文件包含到包装中? 或者让它更具体: 假设我有如下的包结构,如何包含templates目录下的所有文件?

- projectname
  - __init__.py
  - classfile.py
  - templates
    - file1.prototxt
    - file2.caffemodel

我有以下setup.py

from distutils.core import setup
setup(
  name = 'projectname',    
  packages = ['projectname'], 
  version = '0.1',      
  license='MIT',        
  description = 'my description',  
  author = 'FULL NAME',                
  author_email = 'example@gmail.com',     
  url = 'https://github.com/repo',   
  download_url = 'https://github.com/repo/.../v_01.tar.gz',
  keywords = ['keywords'],  
  install_requires=[      
          'opencv-python',
          'numpy'
      ],
  classifiers=[
    'Development Status :: 3 - Alpha',      
    'Intended Audience :: Developers',      
    'Topic :: Software Development :: Build Tools',
    'License :: OSI Approved :: MIT License',  
    'Programming Language :: Python :: 3',     
  ],
)

当我在 stackoverflow 上某处阅读时,我尝试将以下内容添加到 setup.py 文件中,但没有任何区别。

package_data = {
      'templates': ['*'],
  }

【问题讨论】:

    标签: python pip setuptools distutils python-packaging


    【解决方案1】:

    question 的潜在副本

    include_package_data=True
    

    【讨论】:

    • 添加include_package_data=True 没有解决问题:/
    • 您是否检查了我引用的链接以及他们引用的链接?他们有更多关于解决方案的细节,不仅仅是那一行:)
    • @Pythoner "你检查了我引用的链接,以及他们引用的链接吗?他们有更多关于解决方案的细节......" 在这种情况下,你的答案不是一个答案。答案必须是独立的。
    • @phd“答案必须是独立的”——我很乐意复制两个链接的内容并将它们粘贴到此处,但引用重复问题的解决方案似乎更有效。跨度>
    【解决方案2】:

    序言。 “包”这个词严重超载。我将使用"importable package" 的意思这个词,即带有__init__.py 的目录。

    我发现您的代码存在两个问题。首先,您使用distutils,这是一个过时的过时软件包。它将从 Python 中删除。您应该很久以前切换到setuptools。所以换行

    from distutils.core import setup
    

    from setuptools import setup
    

    第二个问题在

    package_data = {
        'templates': ['*'],
    }
    

    字典中的键是,而不是目录名。你的templates 不是一个包(不是__init__.py),而是一个数据目录。所以包含它的方法是

    package_data = {
        'projectname': ['templates/*'],
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-11
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 2015-07-28
      相关资源
      最近更新 更多