我正在发布一个 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 sample
or import sampeldir.sample
。例如,在使用 HTTP 库requests
时,只需导入它并调用requests.get(url)
. requests.requests.get('url')
不是必需的,就像在urllib
. 如果我想命名包,正确的目录命名和安排是sample
什么?