我有一个在本地构建的包,我希望分发到另一个包中使用。在pip install .
之后,我可以导入这个包并在Python中运行函数,但 * 只有在原始目录中。* 例如,安装包后立即:
>>> import mypkg
>>> mypkg.components.body_columns.dummify
<function dummify at 0x7fb380650e50>
字符串
但是,一旦我离开目录,它就不能再被导入了。例如,在cd ~/Desktop
之后:
>>> import mypkg
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'mypkg'
型
此外,在安装位置(使用pip show mypkg
给出),当前只有mypkg-1.3.0.dist-info
目录,没有mypkg
目录。我一直试图遵循this guidance,但还没有运气,这似乎是一个明显的问题。
我是新尝试分发包-任何想法是怎么回事?
如果有帮助,(简化的)分层结构是:
mypkg
├── mypkg
│ └── components
│ ├── __init__.py
│ └── body_columns.py
├── __init__.py
├── app.py
└── setup.py
型
基础__init__.py
读取:from . import mypkg
。
1条答案
按热度按时间6rvt4ljy1#
我想明白了这是一个基本的问题,与我放置
__init__.py
文件的位置有关。正确的文件结构不会将第一个
__init__.py
放在根目录中,而是放在它所包含的同义目录中:字符串
我之所以能够导入到正确的目录中,是因为我和
mypkg
文件夹本身在同一个目录中,也就是说,我只是导入了一个人可能导入的任何脚本,该脚本位于当前目录中(尽管在这种情况下是包)。