Skip to main content
 首页 » 编程设计

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

2025年05月04日10mayingbao

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

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

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

问题是我可以使用 pip 安装 forcelib 包,但是当我导入 forcelib 时,它只有“双下划线” "属性可见。也就是说,我看不到 forcelib 模块。

要复制的示例:

  1. git clone https://github.com/blokeley/forcelib
  2. cd forcelib
  3. pip install -e .
  4. python
  5. 导入forcelib
  6. print(forcelib.__version__) # 正确打印 0.1.2
  7. dir(forcelib) # 内容只有__version__, __path__等双下划线属性。我曾期望看到 forcelib、example_read 等。

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

(非常小)project is on GitHub .

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

请您参考如下方法:

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

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

    从 .forcelib 导入 *

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

    • setup.py
    • forcelib.py

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

方法 (2) can be seen here .它更简单,但缺 pip 是没有隐藏私有(private)函数和属性。