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

Python 如何在PyPI中包含非.py文件?,python,pip,manifest,setup.py,pypi,Python,Pip,Manifest,Setup.py,Pypi,我是PyPI的新手…所以让我来证明这一点。我正在尝试在PyPI上安装一个包,但在尝试使用pip安装它时遇到了一些问题。当我将文件上载到PyPI时,会收到一条警告(但是setup.py脚本完成时没有致命错误,状态为200): 然后,当我在pip中安装它时,我得到一个错误: "error: can't copy 'my_package/static/my_folder': doesn't exist or not a regular file. 从其他答案来看,我尝试更改MANIFEST.in和

我是PyPI的新手…所以让我来证明这一点。我正在尝试在PyPI上安装一个包,但在尝试使用pip安装它时遇到了一些问题。当我将文件上载到PyPI时,会收到一条警告(但是setup.py脚本完成时没有致命错误,状态为200):

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

"error: can't copy 'my_package/static/my_folder': doesn't exist or not a regular file. 
从其他答案来看,我尝试更改MANIFEST.in和setup.py文件,但没有成功。这是我当前的清单。在:

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文件,只是想看看这是否会弄乱任何东西,但我得到了相同的结果。

(根据请求的评论重新发布。)

您的安装脚本和
MANIFEST.in
应该可以工作。用一个简单的例子来证明这一点:

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

运行
python setup.py sdist
,您会发现
static/a.css
\uuu init\uuu.py
都捆绑在
tar.gz
包中。

刚刚用两个文件构建了一个简单的项目(
my_package/\uu init.py
my_package/static/a.css
),您的
setup.py
MANIFEST.in
工作正常。您的舱单中有其他规则吗?如果你能提供一个最小的项目来重现这个问题,那就太好了。@uranusjr:成功了。然后我删除了PyPI上的整个包,并重新提交,没有任何问题。一定是PyPI那边的事。既然你有效地解决了这个问题,请发表你的评论作为回答,我会接受的。谢谢我不清楚你要什么。答案已经包含了一个
\uuuuu init\uuuuuu.py
,您不需要对清单执行任何操作,因为setuptools会自动包含
包中指定的目录中包含的所有
\uuuuuuuuuuuu.py
my_project/
    my_package/
        static/
            a.css
        __init__.py
    MANIFEST.in
    setup.py