从命令行/ PyCharm调用Python包

丹平

我正在创建一个Python程序包,我希望它将同时通过命令行和其他脚本进行调用。这是我的文件结构的简化版本:

GREProject/
    __init__.py
    __main__.py
    Parsing.py

Parseing.py包含一个方法parse(),它带有两个参数,一个输入文件和一个输出文件。我试图找出“ __main__.py”的正确代码,以便从命令行或终端调用以下代码时,参数将传递给“ parse()”:

Python GREProject -i input.file -o output.file

我已经尝试了很多方法,但是都遇到了失败,我相信我需要解释器的“ -m”标志,但是我不知道的更多。带有标志的示例:

Python -m GREProject -i input.file -o output.file

运行更高版本的命令时,出现以下错误:

Import by filename is not supported.

大概从这行开始:

from . import Parsing
丹平

好的,原来这是我的IDE PyCharm的问题。不知道为什么我收到此错误,但是我已对其进行了设置:

Import by filename is not supported.

作为记录,这里是我在Pycharm项目中设置的选项

Script:
    GREProject
Script parameters:
    -i .\GREProject\pr2.nyc1 -o .\GREProject\Test.pkl
Enviroment variables:
    PYTHONUNBUFFERED=1
Python interpreter:
    Python 2.7.11 (c:\Python27\python.exe)
Interpreter options:
    -m
Working directory:
    C:\Users\probert.dan\PycharmProjects

以下是对这些选项的说明:

  • 脚本:这是要运行的脚本,默认情况下PyCharm只会插入对.py文件的绝对引用,没有什么可以阻止您手动键入相对引用,在这种情况下为GREProjects文件夹。
  • 脚本参数:这些参数传递到脚本本身,在这种情况下,我告诉脚本输入文件为“。\ GREProject \ pr2.nyc1”,这意味着在“ GREProject”目录中查找文件“ pr2.nyc1”在当前工作目录下。
  • 环境变量:这是由PyCharm设置的,并且保持不变。
  • Python解释器:我的活动解释器。
  • 解释器选项:这里的选项告诉python我们正在调用模块,然后python知道要访问“ __main__.py”文件。
  • 工作目录:运行脚本的目录,我选择“ GREProject”上方的目录

供参考的是我的“ __main__.py文件”的内容:

from . import Parsing
import argparse

parser = argparse.ArgumentParser(description='Parse flags.')
parser.add_argument('-i', help='Import file.')
parser.add_argument('-o', help='(Optional) Output file.')
arguments = parser.parse_args()
Parsing.parse(arguments.i, arguments.o)

同样重要的是要注意,不可能像这样在PyCharm中进行调试。这是调试的解决方案:Intellij / Pycharm无法调试Python模块

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章