当你使用 pip install . 安装一个 Python 包时,如果只生成了 dist-info 文件夹,而没有生成其他预期的文件(如模块文件、脚本等),这通常意味着包的安装过程没有正确完成。以下是一些排查步骤:
setup.py 或 pyproject.toml 文件确保你的 setup.py 或 pyproject.toml 文件配置正确。特别是以下部分:
packages: 确保你列出了所有需要安装的包。package_dir: 如果你有自定义的包目录结构,确保它正确配置。scripts: 如果你有脚本需要安装,确保它们被正确列出。data_files: 如果你有数据文件需要安装,确保它们被正确列出。例如,setup.py 文件可能如下所示:
from setuptools import setup, find_packages
setup(
name="your_package_name",
version="0.1",
packages=find_packages(), # 自动查找所有包
install_requires=[
# 依赖项列表
],
scripts=[
# 脚本文件列表
],
data_files=[
# 数据文件列表
],
)
确保你的包结构符合 Python 的包结构规范。例如:
your_package/
__init__.py
module1.py
module2.py
setup.py
--verbose 选项使用 pip install . --verbose 命令来获取更多详细的安装信息。这可以帮助你查看安装过程中是否有任何错误或警告。
pip install . --verbose
dist-info 文件夹dist-info 文件夹包含了包的元数据。你可以检查其中的 RECORD 文件,看看是否有预期的文件被列出。如果没有,说明安装过程中没有正确生成这些文件。
MANIFEST.in 文件如果你有 MANIFEST.in 文件,确保它包含了所有需要包含的文件。例如:
include README.md
include your_package/data/*.csv
pyproject.toml 文件如果你使用的是 pyproject.toml 文件,确保它正确配置了构建系统。例如:
[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"
有时,清理旧的构建文件并重新安装可以解决问题:
python setup.py clean --all
pip uninstall your_package_name
pip install .
确保你在正确的 Python 环境中安装包。如果你使用了虚拟环境,确保它已激活。
确保你有足够的权限在目标目录中安装包。如果你在系统目录中安装,可能需要使用 sudo。
setup.cfg 文件如果你有 setup.cfg 文件,确保它正确配置了所有必要的选项。
entry_points如果你有 entry_points 配置,确保它们正确配置。例如:
entry_points={
'console_scripts': [
'your_script=your_package.module:main',
],
}
wheel 和 setuptools 版本确保你使用的 wheel 和 setuptools 是最新版本:
pip install --upgrade setuptools wheel
通过以上步骤,你应该能够找到并解决 pip install . 只生成 dist-info 文件夹的问题。如果问题仍然存在,建议提供更多的上下文信息,以便进一步排查。