我有一个安装pip3的Python3脚本和一个用于创建液滴的digitalocean模块。
我将脚本分为3个函数,即Install(),Run()和Uninstall。在安装功能中,我可以安装pip3和digitalocean模块。
我想在Run()函数中调用多个函数。 在Run()的开始,我导入了digitalocean模块。当我调用使用此模块的另一个函数时,出现“ NameError:未定义名称'digitalocean'”。
我读过的所有内容都说我可以导入一个函数,然后在另一个函数中使用该导入。我不知道Python3是否不同?我缺少什么?(必须)
这里是相关的代码,已撤出大量代码。让我知道您是否需要更多。
#!/usr/bin/python3
import importlib.util
from subprocess import Popen, PIPE, STDOUT
import sys
import subprocess
import time
accessToken = 'ABC'
dropletName = 'newDropletAndTag'
tagName = dropletName
def Install():
pass
#This function installs the package and other things if they are not already present.
def CreateDroplet():
newDroplet = digitalocean.Droplet( token = accessToken,
name = dropletName,
region = 'NYC1',
image = 'ubuntu-16-04-x64',
size_slug = 's-1vcpu-1gb',
ssh_keys = sshKeysList,
backups = False
)
def Run():
import digitalocean
myManager = digitalocean.Manager(token=accessToken)
myDroplets = myManager.get_all_droplets(tag_name=tagName)
Install()
CreateDroplet()
def Main():
#START OF SCRIPT
print('\n\n\n')
print('---- Start Of Script ----')
Run()
print('---- End Of Script ----')
print('\n\n\n')
#END OF SCRIPT
if __name__ == '__main__':
Main()
答案 0 :(得分:0)
原来,您需要明确地说导入模块将是全局的。
将Run()更改为:
def Run():
global digitalocean
import digitalocean
myManager = digitalocean.Manager(token=accessToken)
myDroplets = myManager.get_all_droplets(tag_name=tagName)
Install()
CreateDroplet()