【问题标题】:How to give path for file passed through command line如何为通过命令行传递的文件提供路径
【发布时间】:2025-12-21 18:50:15
【问题描述】:

我得到了如何将文件作为参数传递的答案How to access variables from file passed through command line

但我是分开问的,因为不想混合两个。 我能够以__import__(sys.argv[1]) 的形式访问传递文件中的变量并调用python test.py config。但是我可以通过给出 pythonpath 来调用 config.py 文件吗? e/g/python test.py ~/Desktop/configPYTHONPATH='~/Desktop/' python test.py config?因为如果我这样做,我会得到no module error

【问题讨论】:

    标签: python python-2.7 arguments parameter-passing command-line-arguments


    【解决方案1】:

    您正在尝试使用 __import__ 调用导入 python 模块。它只接受模块名称。如果需要添加目录到PYTHONPATH,可以添加到sys.path,然后导入模块:

    #File: ~/Projects/py/main.py
    
    import sys
    
    python_path = sys.argv[1]
    module_name = sys.argv[2]
    
    sys.path.insert(1, python_path)
    
    print "Importing {} from {}".format(module_name, python_path)
    __import__(module_name)
    

    现在我在~/Desktop 上创建了另一个名为masnun.py 的文件:

    # File: ~/Desktop/masnun.py
    
    print "Thanks for importing masnun.py"
    

    现在我尝试像这样运行main.py

    python main.py ~/Desktop masnun
    

    所以我将 Python 路径传递为 argv[1],将模块名称传递为 argv[2]。现在它起作用了。我得到这个输出:

    【讨论】:

    • 这我可以在 test.py 中做但是我如何通过命令行声明 pythonpath 因为在命令行我正在运行python test.py config
    • 好的,我用详细的代码和命令更新了答案。现在看看是否有帮助。