我对编码和Web开发很陌生。 我是一名系统工程师,希望进入Web开发方面。 我参加了一些python教程,并拼凑了一个(可能非常)粗糙的python应用程序。 我现在想把这个应用程序放在我创建的网站上,这样我就可以允许办公室里的其他人也使用该实用程序。
为此,我安装了transcrypt,目的是将python代码转换为javascript。 运行转录时,我得到以下输出:
编译时出错(最后有问题的文件): 文件"c:/Scripting/Transcrypt/Meraki.py",第 1 行,导入时: 文件 'c:/users/dab404/appdata/local/programs/python/python36/lib/site-packages/requests/init.py',第 43 行,导入时: 文件 'c:/users/dab404/appdata/local/programs/python/python36/lib/site-packages/urllib3/init.py',第 8 行,即: 尝试导入模块:连接池 找不到以下任何一项: c:/Scripting/Transcrypt/connectionpool.py c:/Scripting/Transcrypt/javascript/connectionpool.mod.js
该错误继续列出大约 10 个需要运行的其他文件。 我不确定如何解决此问题,并希望任何人能给我任何帮助。
这是我的代码:
import requests
import json
from meraki import meraki
base_url = "https://dashboard.meraki.com/api/v0/"
def List_Orgs(apikey): #A FUNCTION FOR LISTING ORGANIZATION ADMINS
myOrgs = meraki.myorgaccess(apikey)
for orgs in myOrgs:
print(orgs)
def List_Admins(URL_admin, headers):
x = requests.get(URL_admin, headers = headers)
myAdmins = x.json()
for admins in myAdmins:
print(admins)
def Add_Admin(URL, admin_data, headers): #FUNCTION FOR ADDING NEW ADMIN
TO AN ORGANIZATION
r = requests.request("POST", URL, data = admin_data, headers = headers)
print(r.status_code)
if (r.status_code) == 201:
print()
print()
print("Administrator successfully added!")
print()
else:
print()
print("Administrator was NOT successfully added. Please try again!")
print()
def Del_Admin(URL_del, headers): #FUNCTION FOR DELETING AN ADMIN FROM AN
ORGANIZATION
r = requests.request("DELETE", URL_del, headers = headers)
print(r.status_code)
if (r.status_code) == 204:
print()
print()
print("Administrator successfully deleted!")
print()
else:
print()
print("Administrator was NOT successfully deleted. Please try again!")
print()
apikey = input("What is your Meraki API key? ")
print()
print("******************************************")
print()
print("Here is a list of your Organizations. You will need the ID to answer
the next set of questions.")
print()
print()
List_Orgs(apikey)
print()
print()
headers = {
'X-Cisco-Meraki-API-Key': apikey,
'Content-Type': "application/json"
}
add_or_del = input("Would you like to add or delete an admin? ")
if add_or_del == ("add" or "Add" or "ADD"):
orgid = input("Which Organization would you like to add an admin to? ")
admin_name = input("What is the new Admin's First and Last name? ")
admin_email = input("What is " + admin_name + "'s email address? ")
admin_access = input("What level of access would you like " + admin_name +
" to have? (full or read-only) ")
admin_data = '{nt"name":"' + admin_name + '",nt"email":"' +
admin_email + '",nt"orgAccess":"' + admin_access + '"}'
URL = (base_url + 'organizations/' + orgid + '/admins')
Add_Admin(URL, admin_data, headers)
elif add_or_del == ("delete" or "Delete" or "DELETE"):
orgid = input("Which Organization would you like to delete an admin from?
")
URL_admin = (base_url + 'organizations/' + orgid + '/admins/')
print()
print("Here is a list of Admins in this Organization. You will need to
admin ID to answer the next question.")
print()
print()
List_Admins(URL_admin, headers)
print()
print()
adminid = input ("What is the admin's Meraki portal ID? ")
URL_del = (base_url + 'organizations/' + orgid + '/admins/' + adminid)
Del_Admin(URL_del, headers)
else:
print("Please type add or delete and try again.")'
谢谢! 大卫
问题出在导入上:
import requests
import json
from meraki import meraki
像requests
这样的模块是Transcrypt不支持的标准Python模块,因为它使用用C编写的代码,而不是在浏览器中运行。
对于json
来说,有一个JavaScript对应物可以直接从Transcrypt使用,没有问题。
模块meraki
我不知道,所以无法判断。
尽管Transcrypt发行版中提供了越来越多的标准模块,但通常它使用JavaScript模块,因为这些模块专门针对在浏览器中有意义的功能。
例如,浏览器中通常禁止本地文件访问,因此任何使用它的模块都无法完成它的"事情"。
另请参阅:
http://www.transcrypt.org/docs/html/what_why.html#the-ecosystem-different-batteries
所以在Transcrypt中,你用Python编程,但你使用的库主要是JavaScript。例外是非常常见的库,如数学,cmath,随机(部分),时间,日期时间,迭代工具,re等。
要了解如何从Transcrypt使用JavaScript库,请查看:
http://www.transcrypt.org/examples
以及:
http://www.transcrypt.org/docs/html/integration_javascript.html#mixed-examples
[编辑]
我又仔细看了一下您的应用程序,我注意到它是一个典型的控制台应用程序,使用input
和print
之类的东西。虽然这些在 Transcrypt 中以有限的方式受支持,但请参阅
http://www.transcrypt.org/docs/html/integration_javascript.html#example-using-input-and-print-in-a-dom-terminal-element-in-your-browser
通常,Web 应用程序的工作方式略有不同。
通常,它们是事件驱动的,这意味着许多 GUI 元素被拼凑在一起,有时在 HTML 中,有时在脚本中。然后,这些 GUI 元素触发事件,进而触发要运行的某些代码段(事件处理程序)。
因此,下一步可能是研究这种工作方式。Transcrypt中一个很好的,简单的例子,HTML/DOM和以这种方式合作的脚本是这样的:
http://www.transcrypt.org/docs/html/installation_use.html#your-first-transcrypt-program
在许多情况下,对于Web应用程序,还会与Web服务器进行交互,因此部分处理是在服务器上完成的。
例如,你可以使用Bottle或Django,如演示
:https://github.com/Michael-F-Ellis/NearlyPurePythonWebAppDemo