如何在windows上将websockify与python一起使用,或将websockify编译为windows可执行文件(一次用于更多的多客户端连接)

如何在windows上将websockify与python一起使用,或将websockify编译为windows可执行文件(一次用于更多的多客户端连接),python,websocket,websockify,Python,Websocket,Websockify,我试图在windows上运行,但没有任何运气 我尝试过python websockify.py 1501 10.0.0.141:1501,但效果不佳,出现错误,如下所示: 回溯(最近一次呼叫最后一次): 文件“websockify.py”,第1行,在 跑 NameError:未定义名称“运行” 我也试过了,但也没用 我使用以下命令run.exe 1501 10.0.0.141:1501,开始时它看起来很有希望,将以下内容输出到控制台: 警告:没有“资源”模块,守护进程已禁用 WebSock

我试图在windows上运行,但没有任何运气

我尝试过python websockify.py 1501 10.0.0.141:1501,但效果不佳,出现错误,如下所示:


回溯(最近一次呼叫最后一次):
文件“websockify.py”,第1行,在
跑
NameError:未定义名称“运行”

我也试过了,但也没用 我使用以下命令
run.exe 1501 10.0.0.141:1501
,开始时它看起来很有希望,将以下内容输出到控制台:


警告:没有“资源”模块,守护进程已禁用
WebSocket服务器设置:
-收听:1501
-闪存安全策略服务器
-无SSL/TLS支持(无证书文件)
-代理从:1501到10.0.0.141:1501

但是,在尝试使用以下浏览器进行连接之后
ws://localhost:1501

**它输出以下错误


回溯(最近一次呼叫最后一次):
文件“运行”,第5行,在
websockify_init中的文件“websockify\websocketproxy.pyc”,第419行
文件“websockify\websocket.pyc”,第1018行,在start\u服务器中
UnboundLocalError:赋值前引用的局部变量“exc”



关于如何在windows上使用websockify/或如何将已编译的websockify用作windows可执行文件,您有什么想法吗?

要解决这个问题,请使用修改后的以下命令,从每个步骤的开头开始,看看是否有帮助:

  • 首先,安装
  • 然后您需要修改setup.py(这似乎是您出现第一个错误的原因,因为您可能没有定义run):
从setuptools导入设置中,查找\u包
#添加(第2行):
导入py2exe
设置(名称=名称,
#添加(第10行):
控制台=['run'],
  • 通过检查setup.py并确保其包含run,确保正确执行上述操作

    • 在本地代码中,导入模块,以便监视、测量和控制程序使用的系统资源
导入资源
  • 检查您的局部变量exc,并确保在调用它之前已为其赋值(我猜您可能已将系统变量归因于它,但python无法这样做,因为您没有导入资源,因此它没有赋值)。如果您愿意,请在对此回复的评论中列出您的代码示例,我将仔细查看此部分。

  • 返回到源代码指南,在命令提示符下导航到websockify文件夹,然后执行以下操作以编译websockify:

[您的便携式Python安装路径]\App\Python.exe setup.py py2exe--包括numpy
  • 现在,您将在websockify目录中看到一个新目录'dist',其中包含已编译的exe。提供的示例如下:
run.exe 5901本地主机:5900
如果适合的话,也有一个将websockify作为Windows服务运行的指南(在您的源代码中再次提到)

----进一步编辑以获取更多详细信息--

打开两个似乎给您带来问题的文件(websockify\websocketproxy.pyc和websockify\websocket.pyc),并确保对名为“exc”的变量的任何引用在其被赋值后都被引用(如果您尚未修改这些文件,则出现问题的可能性很小)

我相信您的代码依赖于对系统资源(如端口等)进行更改和监视,并且您不允许您的代码具有这些权限,因此它需要资源模块。如果您是从程序调用run.exe(我称之为您的本地代码)然后,您需要导入顶部的资源。如果您只是直接从命令行调用run.exe程序,请尝试创建此新程序,看看是否有帮助。如果没有,请将websockify文件夹和run.exe的内容发送给我,我会看一看

#程序名称:goAndRun.py
#代码:
导入系统、字符串、操作系统、脚本、资源
chdir('C:\\[Path\u to\u dir\u包含\u run.exe]')
os.system(“'C:\\[Path\\\\\\[u-to\\[u-dir\u-containing\u-run.exe]\run.exe,5901 localhost:5900'”)
然后使用以下命令:

python goAndRun.py
由于不在您的环境中,我无法判断这是否会完全按照我所写的那样执行。最后一行也可能是:

os.system( '"C:\\[Path_to_the_dir_containing_run.exe]\run.exe"', '5901 localhost:5900' )

让websockify在Windows上运行的最简单方法是使用Node.js版本的websockify(在另一个/js目录中)。它完全可以开箱即用,无需任何诡计。

谢谢你的回答,但你99%的答案都是复制粘贴我发布并已成功尝试的链接内容(至少是生成,但正在生成可执行文件…)您提到的唯一附加值是“导入资源”,我应该在哪里插入这一行,它如何帮助我?@Daniel,正如我在回复中所述,我只是从您的源代码中提取代码,并用几行代码和额外注释对其进行了修改。此回复希望不仅能帮助您,也能帮助其他搜索此问题的人为了将其放入本地代码中,import语句位于python代码的顶部(如果有shebang行,则位于shebang行的下面,例如#!/usr/bin/python,然后在下一行导入资源)除了源代码中所写的内容外,我还用粗体标出了对您很重要的几行内容。@Daniel很抱歉,您觉得这只是1%的附加值,但希望这是使其正常工作所需的1%。我已经说过,我已经在“将Websockify编译为Windows可执行文件”链接中尝试了本教程(您从中进行复制粘贴的链接,我已经按照该步骤修改了我的setup.py,但在这样做之后,我得到了我在问题中发布的错误,