gpt4 book ai didi

python - sdist 正确但 pip 安装没有静态

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:53 25 4
gpt4 key购买 nike

我正在尝试通过 pip(存储在 Pypi 上)交付 Django 应用程序。问题是,当我使用 pip 安装应用程序时,它不包含主要指定包内的静态文件夹。

这是我的:

├── LICENSE.txt
├── MANIFEST.in
├── README.rst
├── setup.cfg
├── setup.py
└── zxcvbn_password
├── fields.py
├── __init__.py
├── static
│   └── zxcvbn_password
│   └── js
│   ├── password_strength.js
│   ├── zxcvbn-async.js
│   └── zxcvbn.js
├── validators.py
└── widgets.py

我的做法是:

python setup.py register -r pypi
python setup.py sdist upload -r pypi

tar 存档已正确创建(它包含静态文件夹),当我从 PyPi 下载相同的存档时,它也包含静态文件夹。但是使用 pip 安装它只会在我的站 pip 包内的​​ zxcvbn_password 中提供以下内容:

└── zxcvbn_password
├── fields.py
├── __init__.py
├── validators.py
└── widgets.py

这就是我编写 setup.py 的方式:

from distutils.core import setup

setup(
name='django-zxcvbn-password',
packages=['zxcvbn_password'],
include_package_data=True,
url='https://github.com/Pawamoy/django-zxcvbn-password',
# and other data ...
)

还有我的 MANIFEST.in:

include LICENSE.txt
include README.rst
recursive-include zxcvbn_password/static *

我做错了什么吗?为什么pip使用setup.py install没有安装static文件夹?

编辑

我添加了从 distutils 导入设置函数的 setup.py 行。
我在运行 python setup.py sdist upload -r pypitest 时收到此警告:
/usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'include_package_data'

最佳答案

Distutils 解决方案

# MANIFEST.in

include LICENSE.txt
include README.rst
# recursive-include zxcvbn_password/static *

# setup.py

from distutils.core import setup

setup(
name='django-zxcvbn-password',
packages=['zxcvbn_password'],
package_data={'': ['static/zxcvbn_password/js/*.js']},
# include_package_data=True,
url='https://github.com/Pawamoy/django-zxcvbn-password',
# and other data ...
)

我注释掉了 MANIFEST.in 中的递归包含行和 setup.py 中的 include_package_data=True:显然,如果您在 setup.py 中指定 package_data={...} 行,则不需要它们。

使用设置工具解决

# MANIFEST.in

include LICENSE.txt
include README.rst
recursive-include zxcvbn_password/static *

# setup.py

from setuptools import setup

setup(
name='django-zxcvbn-password',
packages=['zxcvbn_password'],
include_package_data=True,
url='https://github.com/Pawamoy/django-zxcvbn-password',
# and other data ...
)

唯一更改的行是 from setuptools import setup

结论

我的问题确实来自于我导入设置函数的方式。读这个:Differences between distribute, distutils, setuptools and distutils2? ,我了解到 Setuptools 比 Distutils 具有更多功能。

关于python - sdist 正确但 pip 安装没有静态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29018635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com