【问题标题】:Folder for data_files in setup.py build (setuptools)setup.py build (setuptools) 中的 data_files 文件夹
【发布时间】:2016-04-25 13:13:22
【问题描述】:

我正在尝试将 data_file 添加到 setup.py 项目。我可以使用来自/tmp/ 目录的文件,但不能从脚本的当前目录使用它:

from setuptools import setup, find_packages
import os

packages = find_packages("src")
foo_path = os.path.dirname(os.path.abspath(__file__)) + '/foo.dat'
print foo_path   # file exists and there full absolute path is printed:
                 # '/home/loom/myapp/foo.dat'

setup(name='myapp',
        version='0.2.0',
        url='http://loom.st',
        author='Loom',
        author_email='admin@loom.st',
        package_dir={'': 'src'},
        packages=packages,
        py_modules=['my_start'],
# 1.        data_files=[('lib/python', [foo_path])],
# 2.        data_files=[('lib/python', [/tmp/foo.dat])],
        setup_cfg=True,
        )

1. 行未注释时,python setup.py bdist_rpm 失败并显示消息:

running install_data
error: can't copy '/home/loom/myapp/build/bdist.linux-x86_64/rpm/BUILD/myapp-0.2.0/foo.dat': doesn't exist or not a regular file
error: Bad exit status from /var/tmp/rpm-tmp.02mmV8 (%install)

2. 行未注释时,构建完成并包含foo.dat(文件/tmp/foo.dat 存在)

为什么1. 行会导致错误以及如何避免?

【问题讨论】:

  • 您是在 Windows 还是 *nix 下工作?尝试删除 /home/loom/myapp/foo.dat/ 中的尾随 / 而在 /tmp/foo.dat 它似乎是一个文件而不是一个目录
  • @linusg - 我正在研究 *nix,tmp 位于根目录中,并且文件 /tmp/foo.dat 存在。我会扩大问题,谢谢
  • 嗯,好的,谢谢。请尝试我在评论中添加的内容。
  • 如果foo_path 与安装文件位于同一目录中,可能会将其定义为"./foo.dat"??
  • @linusg - error: can't copy './foo.dat': doesn't exist or not a regular file 我从它开始。

标签: python setuptools setup.py


【解决方案1】:

这里的问题是,你给foo.dat 提供了错误的路径,它是以目录的形式给出的:

/home/loom/myapp/foo.dat/

只需删除末尾的/,它就是文件的路径:

/home/loom/myapp/foo.dat

如果文件确实存在,那么现在应该一切都好。

【讨论】:

  • 对不起。这是我修复的问题中的一个错字。不幸的是,文件夹的问题仍然存在。
  • 糟糕,再看一遍!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
  • 1970-01-01
  • 2020-04-26
  • 2013-01-02
  • 2015-10-25
  • 2015-09-02
相关资源
最近更新 更多