当前位置: 首页 > 面试题库 >

如何在setuptools / distutils中包含软件包数据?

夏华藏
2023-03-14
问题内容

使用setuptools时,无法让安装程序提取任何package_data文件。我读过的所有内容都表明,以下是正确的方法。有人可以请教吗?

setup(
   name='myapp',
   packages=find_packages(),
   package_data={
      'myapp': ['data/*.txt'],
   },
   include_package_data=True,
   zip_safe=False,
   install_requires=['distribute'],
)

myapp/data/数据文件的位置在哪里。


问题答案:

我知道这是一个老问题,但人们发现这里通过谷歌自己的方式:
package_data是低了下来,肮脏的谎言。它仅在构建 二进制
软件包(python setup.py bdist ...)时使用, 在构建源软件包(python setup.py sdist ...)时不使用。当然,这是荒谬的-人们希望构建源代码分发将导致文件的集合,这些文件可以发送给其他人来构建二进制分发。

在任何情况下,使用MANIFEST.in将工作 二进制和源分布。



 类似资料:
  • 问题内容: 我正在尝试在Hadoop流作业中包括一个python软件包(NLTK),但不确定如何通过CLI参数“ -file”手动不包括每个文件来执行此操作。 编辑:一种解决方案是在所有从站上安装此软件包,但是我目前没有该选项。 问题答案: 我会将软件包压缩为a或a,然后将整个tarball或归档文件作为选项传递给hadoop命令。过去我是用Perl做到的,而Python却没有。 也就是说,如果你

  • 问题内容: 我知道如何使用Anaconda安装软件包,以及如何安装PyPi上的软件包,如手册中所述。 但是,如何才能将软件包/文件夹永久包含在Anaconda环境中,以便可以导入当前正在使用的代码,并且在重新启动后仍然可用? 我当前的方法是使用: 这不是很方便。 有什么提示吗? 提前致谢! 问题答案: 我在Anaconda论坛中找到了两个问题的答案: 1.)将模块放入站点包中,即始终位于的目录中。

  • 问题内容: 您可以简单地从python安装中删除目录,还是必须删除任何残留文件? 问题答案: 它取决于您传递给的选项以及系统/软件包中distutils配置文件的内容。我不相信会以这些方式在指定目录之外修改任何文件。 值得注意的是,distutils目前没有卸载命令。 还值得注意的是,删除程序包/鸡蛋可能会导致依赖关系问题,例如尝试减轻此类问题的实用程序。

  • 问题内容: 如何从软件包中定义版本(出于或其他目的)? 问题答案: 询问已安装发行版的版本字符串 要在运行时从程序包内部检索版本(您的问题似乎在问什么),可以使用: 存储版本字符串以在安装期间使用 如果您想沿另一方向走动(这似乎是其他答案作者似乎认为您正在询问的问题),请将版本字符串放在单独的文件中,然后在中读取该文件的内容。 您可以用一行在软件包中创建一个version.py ,然后使用来从se

  • 问题内容: 我正在编写一个使用模块SEAPI.py的sublime text 2插件,该插件本身会导入请求模块。 由于sublime text2使用它自己的嵌入式python解释器,因此看不到我的ubuntu机器上安装的请求模块(我收到以下错误:ImportError:没有名为请求的模块)。 到目前为止,我能找到的最佳解决方案是将“请求”模块(文件的整个目录)从/usr/lib/python2.7

  • 问题内容: 我有一个具有固定布局的应用程序,无法更改。我想使用setuptools将其包装起来,例如编写一个脚本。 使用官方文档,我能够编写第一个模板。但是,有问题的应用程序使用了很多其他数据文件,这些文件不是任何程序包的明确组成部分。这是一个示例源树: 这是麻烦所在:中的代码 读取文件和。对于前者,我可以通过添加一个空文件将其升级到程序包并由拾取来修补该问题。但是我怎么可能增加我的呢? 所提出的