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

时间:2016-03-23 21:44:42

标签: python pip setup.py

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

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

我的setup.py是从official example复制而来的,并且有明显的修改。

问题是我可以使用forcelib安装pip包,但是当我导入forcelib时,它只有#34;双下划线"属性可见。也就是说,我看不到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
  8. 也许我应该distribute just the module而不是打扰一个包。

    (非常小)project is on GitHub

    非常感谢任何建议。

2 个答案:

答案 0 :(得分:0)

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

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

    来自.forcelib import *

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

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

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

答案 1 :(得分:-1)

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

<!DOCTYPE html>
<html lang="en-US" class="test">
   <head>
      <meta charset="UTF-8">
   </head>
   <body>
     <div class="page-masthead">
        <p>Lorem Ipsunm Dolor Sit Amet</p>
     </div>
   </body>
</html>

enter image description here

它将成功安装包