从命令行/ PyCharm调用Python包

时间:2016-07-05 22:02:26

标签: python-2.7

我正在创建一个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

1 个答案:

答案 0 :(得分:1)

好的,事实证明这是我的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"这意味着,查看文件" pr2.nyc1"在" GREProject"当前工作目录下的目录。
  • 环境变量:这是由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 can't debug Python modules