我用 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
模块。
要复制的示例:
git clone https://github.com/blokeley/forcelib
cd forcelib
pip install -e .
python
import forcelib
print(forcelib.__version__)
# 正确打印 0.1.2
dir(forcelib)
# 内容只有__version__
、__path__
等双下划线属性。我原以为会看到 forcelib
、example_read
等
也许我应该 distribute just the module 而不是为包裹而烦恼。
(非常小)project is on GitHub.
如有任何建议,我们将不胜感激。
下载 zip 文件并在转到 forcelib-master 目录后解压缩 zip
然后打开命令提示符并在命令提示符和 运行 command
中转到 forcelib-master 目录
python setup.py install
它将成功安装软件包
似乎有两种方法可以做到:
保持相同的目录结构,但将以下内容放入__init__.py
从 .forcelib 导入 *
分发模块,而不是包。遵循 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。比较简单,缺点是没有隐藏私有函数和属性。
我有一个简单的 Python 项目,实际上一个包(称为 forcelib
)包含一个模块(也称为 forcelib
):
- setup.py
- forcelib
|- __init__.py
|- forcelib.py
我的 setup.py
是从 official example 复制的,并且有明显的编辑。
问题是我可以使用 pip
安装 forcelib
包,但是当我导入 forcelib
时,它只有 "double-underscore" 属性可见。也就是说,我看不到 forcelib
模块。
要复制的示例:
git clone https://github.com/blokeley/forcelib
cd forcelib
pip install -e .
python
import forcelib
print(forcelib.__version__)
# 正确打印 0.1.2dir(forcelib)
# 内容只有__version__
、__path__
等双下划线属性。我原以为会看到forcelib
、example_read
等
也许我应该 distribute just the module 而不是为包裹而烦恼。
(非常小)project is on GitHub.
如有任何建议,我们将不胜感激。
下载 zip 文件并在转到 forcelib-master 目录后解压缩 zip 然后打开命令提示符并在命令提示符和 运行 command
中转到 forcelib-master 目录python setup.py install
它将成功安装软件包
似乎有两种方法可以做到:
保持相同的目录结构,但将以下内容放入
__init__.py
从 .forcelib 导入 *
分发模块,而不是包。遵循 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。比较简单,缺点是没有隐藏私有函数和属性。