【问题标题】:Not able to import my own python package after pip installationpip安装后无法导入我自己的python包
【发布时间】:2019-10-26 02:05:49
【问题描述】:

我正在尝试构建我的第一个公开可用的 python 包,但在另一台机器上安装它时遇到了一些问题,不确定出了什么问题。我的项目是here

在 master 分支上的所有 CI 步骤之后,Travis 将最新版本发布到 pypi。之后,我们可以在任何地方安装包:

pip install spin-clustering

但是当我尝试在我的常规 python 上导入它时,它说该模块不存在。

$ python -c "import spin"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'spin'

我的包最初被称为“spin”,但名称已经在 pypi 上使用,我将其更改为“spin-clustering”,但由于 scikit-learn 是使用“sklearn”导入的,我认为可以导入我的包装为“旋转”。不确定我在这里缺少什么。

这是我的包结构:

├── LICENSE
├── Makefile
├── Pipfile
├── README.md
├── examples
│   ├── circle-example.ipynb
│   └── random-cluster-example.ipynb
├── setup.cfg
├── setup.py
└── spin
    ├── __init__.py
    ├── distances
    │   ├── __init__.py
    │   ├── distances.py
    │   └── tests
    │       └── __init__.py
    ├── neighborhood_spin.py
    ├── side_to_side_spin.py
    ├── tests
    │   ├── __init__.py
    │   ├── test_spin.py
    │   └── test_utils.py
    └── utils.py

还有我的 setup.py

from setuptools import setup, find_packages

setup(name="spin-clustering",
      maintainer="otaviocv",
      maintainer_email="otaviocv.deluqui@gmail.com",
      description="SPIN clustering method package.",
      license="MIT",
      version="0.0.3",
      python_requires=">=3.6",
      install_requires=[
          'numpy>=1.16.4',
          'matplotlib>=3.1.0'
          ]
      )

【问题讨论】:

  • 在 PyPI 上放置任何东西之前,您应该通过从文件路径安装到您的代码,安装到沙箱 (virtualenv) 中进行本地测试。
  • 当然,我会更加小心。

标签: python pip


【解决方案1】:

在你的 setup.py 中,你 also need to specify what packages will be installed。最简单的方法是使用提供的find_packages 函数,它将扫描您的文件夹并尝试找出包是什么(在一些稍微不寻常的情况下,您的项目组织会使其无法正常工作)。您的代码导入了find_packages,但没有使用它。

由于您没有列出任何内容,因此实际上没有安装任何内容(除了要求,如果缺少)。

【讨论】:

  • 它工作得很好,但我不明白这个 find_package 函数在做什么。
  • 它查看项目中文件夹的内容,并尝试确定包是什么(我不知道具体情况)。毕竟,并非源目录中的每个子文件夹都一定代表一个包。您可能有一个用于文档、测试或补充数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多