如何在PyPI中包含non.py文件?

时间:2014-04-23 18:24:48

标签: python pip manifest setup.py pypi

我是PyPI的新手...所以让我有资格。我试图在PyPI上放一个包,但是当我尝试用pip安装它时遇到了一些麻烦。当我将文件上传到PyPI时,我收到一个警告(但是setup.py脚本完成时没有致命错误和200状态):

'my_package/static/my_folder' not a regular file -- skipping

然后当我在pip中安装它时,我收到一个错误:

"error: can't copy 'my_package/static/my_folder': doesn't exist or not a regular file. 

从SO上的其他答案,我尝试更改我的MANIFEST.in和我的setup.py文件,没有运气。这是我目前的MANIFEST.in:

recursive-include my_package *.css *.js *.jinja2

和setup.py:

try:
    from setuptools import setup, find_packages
except ImportError:
    from distutils.core import setup, find_packages

setup(
    name='my_package',
    packages=find_packages(),
    include_package_data=True,
    platforms='any',
    version='1.0',
    description='my_description',
    license='MIT',
    author='Me',
    author_email='me@example.com',
    install_requires=[
        'Flask',
        'Jinja2',
        'requests',
    ],
    url='http://www.example.com',
    download_url='https://github.com/me/my_package/tarball/1.0',
    classifiers=[
        'License :: OSI Approved :: MIT License',
    ],
)
编辑:我也试过省略MANIFEST.in文件只是为了看看是不是搞乱了什么,但我得到了相同的结果。

1 个答案:

答案 0 :(得分:2)

(根据要求发表评论。)

您的设置脚本和MANIFEST.in应该有效。用一个最小的例子证明这一点:

my_project/
    my_package/
        static/
            a.css
        __init__.py
    MANIFEST.in
    setup.py

运行python setup.py sdist,您会发现static/a.css__init__.py捆绑在tar.gz包中。