所以我阅读了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的函数。