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

2024-04-29 11:27:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让websockify 0.6.0在windows上运行,但是没有任何运气

我试过python websockify.py 1501 10.0.0.141:1501,但不太好,出现了这样的错误:

Traceback (most recent call last): File "websockify.py", line 1, in <module> run NameError: name 'run' is not defined

我也试过Compiling Websockify as Windows Executable,但也没用 {I}使用下面的命令{3>在输出时使用以下命令:

WARNING: no 'resource' module, daemonizing is disabled WebSocket server settings: - Listen on :1501 - Flash security policy server - No SSL/TLS support (no cert file) - proxying from :1501 to 10.0.0.141:1501

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

**输出以下错误

Traceback (most recent call last): File "run", line 5, in <module> File "websockify\websocketproxy.pyc", line 419, in websockify_init File "websockify\websocket.pyc", line 1018, in start_server UnboundLocalError: local variable 'exc' referenced before assignment


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


Tags: runinpymostserverwindows错误line
2条回答

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

  • 首先,安装Portable Python 2.7
  • 然后你需要修改设置.py(这就是为什么您会收到第一个错误,因为您可能没有定义run):
from setuptools import setup, find_packages
# add (line 2):
import py2exe

setup(name=name,
# add (line 10):
console=['run'],
  • 通过检查确保上述内容正确执行设置.py确保它包括跑步。在

    • 在本地代码中,导入resources模块,以便监视、测量和控制程序使用的系统资源
^{pr2}$
  • 检查您的局部变量exc,确保您在调用它之前已经为它赋值(我猜您可能已经将一个系统变量赋给它了,但是python无法这样做,因为您没有导入资源,因此也没有分配它)。如果您愿意,请在对此回复的评论中提供您的代码示例,我将仔细查看这部分内容。

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

[Your path to Portable Python install]\App\python.exe setup.py py2exe  includes numpy
  • 现在,您将在websockify目录中看到一个新的dir'dist',其中包含已编译的exe文件。示例如下:
run.exe 5901 localhost:5900

还有一个指南here如果适合,可以将websockify作为Windows服务运行(在您的源代码中再次提到)。在

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

打开两个可能会给你带来问题的文件(websockify\websocketproxy.pyc和websockify\websocket.pyc网站并确保对名为“exc”的变量的任何引用在被赋值后被引用(如果您还没有修改这些文件,则很有可能出现问题)。在

我相信您的代码依赖于对系统资源(如端口等)进行更改和监视,并且您不允许您的代码拥有这些权限,因此它需要resources模块。如果你打电话来运行.exe从一个程序(我称之为您的本地代码)中,您需要从顶部导入资源。如果你直接打电话给运行.exe从命令行编写程序,然后尝试制作这个新程序,看看这是否有帮助。如果没有,把你的websockify文件夹的内容发给我运行.exe我去看看

# Program Name: goAndRun.py

# Code:

import sys, string, os, arcgisscripting, resource
os.chdir( 'C:\\[Path_to_the_dir_containing_run.exe]' )
os.system( '"C:\\[Path_to_the_dir_containing_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上运行的最简单的方法是使用节点.jswebsockify的版本(在other/js目录中)。它完全是开箱即用的,不需要任何诡计。在

相关问题 更多 >