我用 pip install 安装的包显示没有模块

My package installed with pip install shows no modules

我有一个简单的 Python 项目,实际上一个包(称为 forcelib)包含一个模块(也称为 forcelib):

- setup.py
- forcelib
  |- __init__.py
  |- forcelib.py

我的 setup.py 是从 official example 复制的,并且有明显的编辑。

问题是我可以使用 pip 安装 forcelib 包,但是当我导入 forcelib 时,它只有 "double-underscore" 属性可见。也就是说,我看不到 forcelib 模块。

要复制的示例:

  1. git clone https://github.com/blokeley/forcelib
  2. cd forcelib
  3. pip install -e .
  4. python
  5. import forcelib
  6. print(forcelib.__version__) # 正确打印 0.1.2
  7. dir(forcelib) # 内容只有__version____path__等双下划线属性。我原以为会看到 forcelibexample_read

也许我应该 distribute just the module 而不是为包裹而烦恼。

(非常小)project is on GitHub.

如有任何建议,我们将不胜感激。

下载 zip 文件并在转到 forcelib-master 目录后解压缩 zip 然后打开命令提示符并在命令提示符和 运行 command

中转到 forcelib-master 目录
python setup.py install

它将成功安装软件包

似乎有两种方法可以做到:

  1. 保持相同的目录结构,但将以下内容放入__init__.py

    从 .forcelib 导入 *

  2. 分发模块,而不是包。遵循 the instructions to use the py_modules 参数而不是 setup.py 中的 packages 参数。这意味着将项目重组为:

    • setup.py
    • forcelib.py

方法 (1) can be seen here。它的优点是隐藏了私有函数和属性(任何不在 __all__ 中的东西),但客户端仍然可以看到模块 forcelib.forcelib,我认为这是不应该的。

方法 (2) can be seen here。比较简单,缺点是没有隐藏私有函数和属性。