我正在发布一个 python 包,并且对包装的各个方面感到困惑。
首先,我的目录结构如下:
SamplePackage/
- setup.py
- README.rst
- LICENSE.rst
- sampledir/
-__init__.py
-sample.py
-utils.py
目前__init__并且setup无人居住。sample.py是包的任何用户都想要导入的文件。它包含不同功能形式的 api:foo1, foo2.
utils.py包含smaple.py. 后者包含一个声明import utils
放置在该目录下的任何脚本sampledir都可以轻松地import sample将小说用作sample.foo1(). 走出这个目录,我可以调用import sampledir,但不能调用import sample,这是预期的。所以我需要做from sampledir import sample。这会导致import utils行中的错误sample.py
ImportError: No module named 'utils'
在某些地方,我看到import .utils同一目录中的文件。但是当我尝试这样做时,会导致语法错误。
为什么我不能sample.py从外部 sampledir 导入?
此外,什么样的目录结构将允许已安装软件包的用户简单地调用import sample后跟sample.foo1(),而不必执行from sampledir import sampleor import sampeldir.sample。例如,在使用 HTTP 库requests时,只需导入它并调用requests.get(url). requests.requests.get('url')不是必需的,就像在urllib. 如果我想命名包,正确的目录命名和安排是sample什么?