Python 如何在PyPI中包含非.py文件?
我是PyPI的新手…所以让我来证明这一点。我正在尝试在PyPI上安装一个包,但在尝试使用pip安装它时遇到了一些问题。当我将文件上载到PyPI时,会收到一条警告(但是setup.py脚本完成时没有致命错误,状态为200): 然后,当我在pip中安装它时,我得到一个错误: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和
"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