导入 python 模块以使脚本能够从命令行运行

Posted

技术标签:

【中文标题】导入 python 模块以使脚本能够从命令行运行【英文标题】:Importing a python module to enable a script to be run from command line 【发布时间】:2018-04-01 09:32:48 【问题描述】:

我是 python 新手,正在尝试从这个 github repo (https://github.com/mgp25/psn-api) 测试一个脚本。

根目录有一个example.py,我正在尝试使用它来运行它

$ python example.py

这给出了这个错误:

Traceback (most recent call last):
  File "example.py", line 1, in <module>
    from src.Auth import Auth
ImportError: No module named src.Auth

我怎样才能让它运行?

根目录中有一个名为 src 的文件夹,但因为我是 python 新手,所以我不知道如何连接东西以便导入 src.Auth 模块(或者如果这甚至是正确的术语)

【问题讨论】:

目录中有 init.py 文件吗? 我没有。只是回购的内容。 该程序似乎导入了模块,因为我在身份验证方面得到了不同的用户。该模块甚至联系了 PSN 并得到了 403 响应。 【参考方案1】:

在存储库根目录中,您可以:

touch src/__init__.py

这将创建一个空文件,但它是 Python 模块搜索系统所必需的。那么你应该能够毫无问题地运行它,除非对外部库有一些依赖。

【讨论】:

这确实创建了py 文件,但我得到了同样的错误 对不起,我的原始回复有误。您必须在根目录中运行它: touch src/__init__.py 重要的是要注意它不会是点和 py 扩展名之间的空格。刚刚在我的原始回复中进行了编辑。你能再试一次吗?【参考方案2】:

Python 3.3+ 很乐意将其解释为没有__init__.py 的包,fwiw,我相信这就是作者所写的。

还请注意,刚刚尝试运行它,您需要安装simplejsonrequests。 (通常会有requirements.txt 或类似的说法。)

【讨论】:

它在运行pip3 install simplejsonpip3 install requests然后运行python3作为python3 example.py的命令后工作。

以上是关于导入 python 模块以使脚本能够从命令行运行的主要内容,如果未能解决你的问题,请参考以下文章

用于命令行脚本和导入模块的 Python“模板”模块

在命令行中启动脚本时导入模块

从命令行运行Python文件不会加载模块

如何从命令行调试使用 python -m 运行的 Python 模块?

如何根据命令行输入包含py文件?

怎样才能让python 脚本像shell命令一样直接运行并可以接收参数