Python 导入和包:__init__.py文件无法修复 ModuleNotFoundError?



所以我阅读了Packages文档,并在每个包和父包中包含了__init__.py文件。我的目录看起来像这个

sparro
__init__.py
api
__init__.py
sparrolib.py
schema
__init__.py
tsbuild.py
scripts
__init__.py
scrape_descriptors.py
utils
__init__.py
analytics.py
engine.py
utility.py

因此,我尝试使用将我的实用程序模块导入scrape_descriptors.py

from sparro.utils import utility, engine

它失败并给我一个ModuleNotFoundError。我在其他模块中尝试过,但也遇到了同样的问题。我误解了什么?我该如何纠正?

错误:

Traceback (most recent call last):
File "/Users/dominictarro/Documents/Sparro/sparro/scripts/scrape_descriptors.py", line 2, in <module>
from sparro.utils import utility, engine
ModuleNotFoundError: No module name 'sparro'
[shell_cmd: python -u "/Users/dominictarro/Documents/Sparro/sparro/scripts/scrape_descriptors.py"]
[dir: /Users/dominictarro/Documents/Sparro/sparro/scripts]
[path: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin]

您需要将包的父目录添加到PYTHONPATH中。

在崇高终端中运行以下命令:

export PYTHONPATH=$PYTHONPATH:/Users/dominictarro/Documents/Sparro/

要使其永久化,请研究如何为系统设置环境变量。如果你运行的是linux或macOS,那么你会将命令添加到你的.bashrc文件中(可能在这里/Users/dominicarro/.bashrc(

你也可以研究如何通过崇高来设定巨蟒。


或者,当您的工作目录为/Users/dominicarro/Documents/Sparro/时,您需要调用代码

您可以通过在这里创建一个文件(按照惯例称为main.py(来实现这一点,该文件导入并调用库中的某些内容。

例如

from sparro.scripts.scrape_descriptors import run
if __name__ == '__main__':
run()

显然需要一个名为run-in的函数。

相关内容

  • 没有找到相关文章

最新更新