相关疑难解决方法(0)

如何使用setuptools/distribute包含包数据?

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

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

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

python setuptools distribute

115
推荐指数
8
解决办法
7万
查看次数

MANIFEST.in在"python setup.py install"上忽略 - 没有安装数据文件?

这是我删除的非代码内容的精简版setup.py脚本:

#!/usr/bin/env python

from distutils.core import setup
from whyteboard.misc import meta


setup(
    name = 'Whyteboard',
    version = meta.version,

    packages = ['whyteboard', 'whyteboard.gui', 'whyteboard.lib', 'whyteboard.lib.pubsub',
                'whyteboard.lib.pubsub.core', 'whyteboard.lib.pubsub.utils', 'whyteboard.misc'],

    py_modules = ['whyteboard'],
    scripts = ['whyteboard.py'],
)
Run Code Online (Sandbox Code Playgroud)

MANIFEST.in:

include *.txt
include whyteboard-help/*.*
recursive-include locale *.mo
recursive-include images *.png
Run Code Online (Sandbox Code Playgroud)

当我运行"python setup.py install sdist"时,我得到一个很好的.tar.gz,带有"whyteboard-0.41"根文件夹,里面有我的locale/images /和whyteboard-help/folders.这也有我的whyteboard.py脚本,它从whyteboard源包中启动我的程序.

所以:

whyteboard/
 ??? locale/
 ??? images
 ??? whyteboard-help/
 ??? whyteboard/
 ?  ??? __init__.py
 ?  ??? other packages etc
 ??? whyteboard.py
 ??? README
 ??? setup.py
 ??? CHANGELOG
Run Code Online (Sandbox Code Playgroud)

这反映了我的程序的来源,一切应该是怎样的,并且是正确的.

但是,当我运行"python setup.py install"时,我的数据文件都没有写入 …

python install distutils build

78
推荐指数
6
解决办法
3万
查看次数

如何将其他文件添加到滚轮?

如何控制车轮中包含哪些文件?它似乎MANIFEST.in没有被使用python setup.py bdist_wheel.

更新:

从源tarball到wheel安装之间的区别我错了.源代码分发包括指定的文件MANIFEST.in,但安装的软件包只有python文件.需要步骤来识别应安装的其他文件,无论安装是通过源分发,egg还是wheel.也就是说,其他包文件需要package_data,而命令行脚本或系统配置文件需要包外的文件的data_files.

原始问题

我有一个项目,我一直python setup.py sdist用来构建我的包,MANIFEST.in控制包含和排除的文件,以及pyromacheck-manifest来确认我的设置.

我最近将它转换为双Python 2/3代码,并添加了一个setup.cfg

[bdist_wheel]
universal = 1
Run Code Online (Sandbox Code Playgroud)

我可以用python setup.py bdist_wheel它来制造一个轮子,它看起来像是一个万向轮.但是,它不包括指定的所有文件MANIFEST.in.

什么安装?

我挖得更深,现在更了解包装和轮子.这是我学到的东西:

我将两个包文件上传到PyPi上multigtfs项目:

  • multigtfs-0.4.2.tar.gz- 源tar球,包括所有文件MANIFEST.in.
  • multigtfs-0.4.2-py2.py3-none-any.whl - 有问题的二进制分布.

我创建了两个新的虚拟环境,都使用Python 2.7.5,并安装了每个包(pip install multigtfs-0.4.2.tar.gz).这两种环境几乎完全相同.它们有不同的.pyc文件,即"已编译"的Python文件.有记录磁盘上不同路径的日志文件.源tar球multigtfs-0.4.2-py27.egg-info的安装包括一个文件夹,详细说明安装,并且wheel安装有一个multigtfs-0.4.2.dist-info文件夹,其中包含该进程的详细信息.但是,从使用multigtfs项目的代码的角度来看,两种安装方法之间没有区别.

显然,我的测试使用的.zip文件都没有,因此测试套件将失败:

$ django-admin startproject demo
$ cd demo
$ pip …
Run Code Online (Sandbox Code Playgroud)

python pip python-wheel

52
推荐指数
5
解决办法
2万
查看次数

setuptools:在包外添加其他文件

我有一个python具有固定布局的应用程序,我无法更改.我想用setuptools把它包起来,比如写一个setup.py脚本.

使用官方文档,我能够编写第一个模板.但是,有问题的应用程序使用了许多未明确包含任何包的其他数据文件.这是一个示例源树:

somepackage
   __init__.py
   something.py
   data.txt
additionalstuff
   moredata.txt
INFO.txt
Run Code Online (Sandbox Code Playgroud)

这是麻烦:代码something.py 读取文件moredata.txtINFO.txt.对于前者,我可以通过添加一个空additionalstuff/__init__.py文件来提升additionalstuff一个包并让它被选中来解决这个问题setuptools.但我怎么可能加入INFO.txt我的.egg

编辑

提出的解决方案使用了类似的东西

package_data = { '' : ['moredata.txt','INFO.txt']}
Run Code Online (Sandbox Code Playgroud)

不为我工作,因为文件moredataINFO.txt不属于一个包,而是单独的文件夹,这只是模块作为一个整体的一部分,而不是任何个人软件包的一部分.如上所述,这可以moredata.txt通过添加__init__.py文件来修复additionpythonalstuff,从而将其提升到包.但是,这不是一个优雅的解决方案,并且根本不起作用INFO.txt,它位于顶级目录中.

根据接受的答案,这是解决方案

这是setup.py:

from setuptools import setup, find_packages

setup(
    name='mytest',
    version='1.0.0',
    description='A sample Python project',
    author='Test',
    zip_safe=False,
    author_email='test@test.com',
    keywords='test',
    packages=find_packages(),
    package_data={'': ['INFO.txt', 'moredata.txt'],
                  'somepackage':['data.txt']},
    data_files=[('.',['INFO.txt']),
                ('additionalstuff',['additionalstuff/moredata.txt'])],
    include_package_data=True, …
Run Code Online (Sandbox Code Playgroud)

python setuptools

17
推荐指数
1
解决办法
8501
查看次数

pip没有安装我的data_files.但easy_install确实如此

这将是一个简短的问题.

来源是:https://github.com/exhuma/grc

标题解释了我的问题;)

我注册并上传了包pypi.现在,如果我跑easy_install grc,它按预期工作.但如果我运行pip install grc,它安装正确,但不安装data_files.我不明白为什么会这样.有任何想法吗?

python pip easy-install setup.py

4
推荐指数
1
解决办法
1824
查看次数