【问题标题】:Where are the data files included in MANIFEST.IN stored?MANIFEST.IN 中包含的数据文件存储在哪里?
【发布时间】:2018-08-10 18:00:55
【问题描述】:

我有这个小程序用 Python3.5 做,结构如下:

awesome_gui/
    app.config
    MANIFEST.in
    setup.py
    awesome_gui/
       __init__.py
       main.py  

setup.py:

#!/usr/bin/env python

import os
from setuptools import setup


setup(
    name = "awesomegui",
    version = "1.0",
    author = "Me",
    author_email = "me@example.com",
    description = "Awesome GUI",
    packages=['awesome_gui'],
    entry_points = {
    'console_scripts': ['awesomegui=awesome_gui.main'],
    },
    include_package_data=True,
)

MANIFEST.in

include app.config

执行以下行并创建 .deb:

$ python3 setup.py --command-packages=stdeb.command bdist_deb

然后解压:

$ sudo dpkg -i deb_dist/python3-awesomegui_1.0-1_all.deb

代码 (*.py) 保存在 /usr/lib/python3/dist-packages/awesome_gui/ 中。但我看不到 app.config 的保存位置。

有谁知道非代码的数据文件存储在哪里?

谢谢!

【问题讨论】:

  • 请尽量减少您的问题。我在您的问题中看到了很多不必要的代码和内容。
  • @JonathanBenn 感谢您的建议,我是新手,我正在学习。事实是,在我的 .deb 执行“dpkg”之后,我不知道数据文件存储在哪里
  • 我正在寻找相同@Ribes 的答案。问题解决了吗?
  • 是的。我已经添加了一个答案,看看它是否对你有用。

标签: python python-3.x manifest packaging


【解决方案1】:

因为人们问我是如何解决这个问题的,所以我在下面描述它。对于最初的方法,我做了以下操作:

  • 我把初始项目的结构改成了这个:

    awesome_gui/
        MANIFEST.in
        setup.py        
        awesome_gui/
            app.config
            src/
                __init__.py
                main.py  
    

您可以看到 app.config 文件已被移动到 awesome_gui/ 项目文件夹中,并且还创建了一个名为 src 的文件夹,并将代码移入其中。

  • setup.py 文件也被编辑:

    #!/usr/bin/env python
    
    import os
    from setuptools import setup
    
    
    setup(
        name = "awesomegui",
        version = "1.0",
        author = "Me",
        author_email = "me@example.com",
        description = "Awesome GUI",
        packages=['awesome_gui',
                  'awesome_gui.src',
                  ],
        entry_points = {
        'console_scripts': ['awesomegui=awesome_gui.src.main:main'],
        },
        include_package_data=True,
        package_data={"awesome_gui": ['app.config']},
     )
    

packagesentry_points 中添加了 src 文件夹/em> 字段。还添加了非 python 文件的 package_data 字段。

  • 通过添加文件夹级别,MANIFEST.in 也被修改:

    include awesome_gui/app.config
    

使用命令安装后,通过这些步骤,我将非 python 文件放在 /usr/lib/python3/dist-packages/awesome_gui/ 文件夹中。

【讨论】:

    【解决方案2】:

    通常,包数据应该在包目录中(例如main.py除外)。
    readme.txt,license,长描述,根目录下的包数据,多用于sdist,pypi,不会安装。

    【讨论】:

      猜你喜欢
      • 2015-01-31
      • 1970-01-01
      • 2010-11-09
      • 2011-05-30
      • 2011-01-06
      • 1970-01-01
      • 2014-02-16
      • 2011-05-19
      • 1970-01-01
      相关资源
      最近更新 更多