Python - 通过 运行 脚本导入包
Python - Importing packages by running a script
我有一个脚本正在导入很多包,包括 import numpy as np
。
我有很多脚本需要导入所有这些包(包括我自己的一些)。为了让我的生活更轻松,我在我的路径中有一个名为 mysetup.py
的文件来导入所有包。它在名为“import numpy as np”的函数中包含该语句。
我运行“main.py”。 运行如下
from mysetup import *
import_my_stuff()
np.pi()
"mysetup.py"
def import_my_stuff():
import numpy as np
return
但是,我无法在“main.py”中使用 numpy - 此代码将失败。关于原因有什么建议吗?
您面临的问题是 Python 的一个非常重要的特性的结果:namespaces.
- https://docs.python.org/3/tutorial/classes.html#python-scopes-and-namespaces
- https://realpython.com/python-namespaces-scope/
基本上,在您的情况下,当您在 (import_my_stuff
) 函数中执行 (numpy
) 导入时,您正在定义代码对象 numpy
/np
在函数命名空间中。 (范围,如果你愿意的话)。
要解决您的问题(您的做法;不是唯一的方法),您应该简单地在模块顶层导入所有内容(没有封装导入的函数) :
mysetup.py
:
import numpy as np
# other modules...
main.py
:
from mysetup import *
np.pi()
函数中的导入不是最好的主意。
但是您可以在 mysetup.py
的顶级代码中定义您需要的任何导入
import numpy as np
然后当您从 mysetup 导入 * 时它将可用
from mysetup import *
print(np.pi)
我有一个脚本正在导入很多包,包括 import numpy as np
。
我有很多脚本需要导入所有这些包(包括我自己的一些)。为了让我的生活更轻松,我在我的路径中有一个名为 mysetup.py
的文件来导入所有包。它在名为“import numpy as np”的函数中包含该语句。
我运行“main.py”。 运行如下
from mysetup import *
import_my_stuff()
np.pi()
"mysetup.py"
def import_my_stuff():
import numpy as np
return
但是,我无法在“main.py”中使用 numpy - 此代码将失败。关于原因有什么建议吗?
您面临的问题是 Python 的一个非常重要的特性的结果:namespaces.
- https://docs.python.org/3/tutorial/classes.html#python-scopes-and-namespaces
- https://realpython.com/python-namespaces-scope/
基本上,在您的情况下,当您在 (import_my_stuff
) 函数中执行 (numpy
) 导入时,您正在定义代码对象 numpy
/np
在函数命名空间中。 (范围,如果你愿意的话)。
要解决您的问题(您的做法;不是唯一的方法),您应该简单地在模块顶层导入所有内容(没有封装导入的函数) :
mysetup.py
:
import numpy as np
# other modules...
main.py
:
from mysetup import *
np.pi()
函数中的导入不是最好的主意。
但是您可以在 mysetup.py
import numpy as np
然后当您从 mysetup 导入 * 时它将可用
from mysetup import *
print(np.pi)