为什么我不能执行“import sys.argv[1]”?

问题描述

我创建了一个名为 parameter.py 的模块,并想使用 sys.argv 导入它,如下所示。

import sys
from sys.argv[1] import *

但是当我运行 python 文件时,出现以下错误

python test.py parameter


File "test.py",line 17
    from sys.argv[1] import *
                 ^
    SyntaxError: invalid Syntax

为什么它不起作用,我还能做些什么来使它起作用?

解决方法

变量import语句中是不允许的

import sys
__import__(sys.argv[1])

全局导入

import sys
globals().update(__import__(sys.argv[1]).__dict__)

示例用法

import sys

sys.argv.append("math")
pi = __import__(sys.argv[-1]).pi
print(pi)

import sys

sys.argv.append("math")
globals().update({k: v for k,v in __import__(sys.argv[-1]).__dict__.items() if not k.startswith("__")})
print(pi)
print(__name__)

输出

3.141592653589793
__main__