【问题标题】:Including .gitignore in setup? - Error: doesn't exist or not a regular file在设置中包括 .gitignore? - 错误:不存在或不是常规文件
【发布时间】:2015-05-19 13:05:17
【问题描述】:

setup.py

from setuptools import setup, find_packages
from os import path
from functools import partial


if __name__ == '__main__':
    package_name = 'gen'
    templates_join = partial(path.join, path.dirname(__file__), package_name,
                             'templates')
    setup(
        name=package_name,
        test_suite=package_name + '.tests',
        packages=find_packages(),
        package_dir={package_name: package_name},
        package_data={package_name: [templates_join('.gitignore')]}
    )

.
├── gen
│   ├── __init__.py
│   ├── templates
│   │   ├── __init__.py
│   │   ├── .gitignore
└── setup.py

错误

错误:无法复制 'gen/ld/gen/templates/.gitignore':不存在或不是常规文件

【问题讨论】:

    标签: python python-2.7 pip setuptools distutils


    【解决方案1】:

    尝试改用abspath(split(__file__)[0])

    from setuptools import setup, find_packages
    from functools import partial
    from os.path import join, abspath, split
    
    if __name__ == '__main__':
        package_name = 'gen'
        templates_join = partial(join, abspath(split(__file__)[0]), 'gen', 'templates')
    
        setup(
            name=package_name,
            test_suite=package_name + '.tests',
            packages=find_packages(),
            package_dir={package_name: package_name},
            package_data={package_name: [templates_join('.gitignore')]}
        )
    

    让我知道它是否有效。

    【讨论】:

    • 不幸的是,失败了。宁愿使用 stdlib 而不是os2emxpath;这是我测试的。
    • 是的,但是我已经尝试过了,但它对我不起作用。它对你有用吗?
    • 是的,它对我有用。哦,对不起,应该添加包'gen'。使用新答案再试一次。
    • 不,那也失败了。
    【解决方案2】:

    确认在 Linux 和 Windows 上使用 data_files 可以在 virtualenv 内部/外部工作:

    from setuptools import setup, find_packages
    from os import path
    from functools import partial
    from pip import __file__ as pip_loc
    
    
    if __name__ == '__main__':
        package_name = 'gen'
    
        templates_join = partial(path.join, path.dirname(__file__),
                                 package_name, 'templates')
        install_to = path.join(path.split(path.split(pip_loc)[0])[0],
                               package_name, 'templates')
    
        setup(
            name=package_name,
            version='0.0.1',
            test_suite=package_name + '.tests',
            packages=find_packages(),
            package_dir={package_name: package_name},
            data_files=[(install_to, [templates_join('.gitignore'),
                                      templates_join('logging.conf')])]
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多