我已成功将我的python项目转换为服务.使用通常的安装和启动/停止选项时,一切正常.但是,我希望使用py2exe编译项目,这似乎正常工作,直到您将EXE作为服务安装并尝试运行它.
您收到以下错误消息:
我的编译python文件(链接到主项目)如下:
导入py2exe
设置(控制台= [ 'webserver.py'])
任何帮助将不胜感激.
我会承认我对Python很新,我真的不知道我在做什么.最近我使用Python 2.6.2和wxPython 2.8创建了一个非常小的Windows应用程序.而且效果很好; 我对它的正常工作表现非常满意.通常我的意思是当我直接通过Python解释器调用它时,如下所示:
> python myapp.py
Run Code Online (Sandbox Code Playgroud)
但是,我想更进一步,实际上将其编译成一个独立的可执行文件.所以我按照wxPython wiki中的这些指令使用了py2exe.起初它在命令行中给了我错误,说MSVCR90.dll丢失了.然后我将MSVCR90.dll复制到我的Python\DLLs文件夹中.这首先看起来像修复它,因为它成功地完成了它需要做的事情.它确实完成了一个快速警告,即程序依赖于某些DLL文件,我可能需要也可能不需要分发它们.
所以我导航到py2exe创建的dist文件夹并尝试运行我的可执行文件.但试图打开它只会弹出一个错误对话框,说:
This application failed to start because MSVCR90.dll was not found.
Re-installing the application may fix this problem.
Run Code Online (Sandbox Code Playgroud)
所以我继续将MSVCR90.dll再次复制到这个dist文件夹中.但那并没有成功.然后我将其复制到WINDOWS\system32目录中.那也没做到.我需要做些什么来使这个东西工作?
有人可以向我解释如何运行我的py2exe程序,一个控制台程序,没有Windows上的终端?
我正在尝试制作一个重新调整窗口大小的程序,它应该从windows开始,所以我希望它隐藏但仍在运行...
我创建了一个使用pywin32的简单程序.我想将它部署为可执行文件,所以我py2exe它.我也不想要大量的文件,所以我设置bundle_files为1(意味着将所有内容捆绑在一起).但是,当我尝试运行它时,我得到:
Traceback (most recent call last):
File "pshelper.py", line 4, in <module>
File "zipextimporter.pyc", line 82, in load_module
File "win32.pyc", line 8, in <module>
File "zipextimporter.pyc", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading win32ui.pyd
Run Code Online (Sandbox Code Playgroud)
在我的安装脚本中,我尝试过packages=["win32ui"]并includes=["win32ui"]作为选项,但这没有帮助.如何让py2exe包含win32ui.pyd?
如果我不要求它捆绑文件我没有这个问题,所以我现在可以这样做,但我想知道如何让它正常工作.
从脚本创建exe后py2exe raw_input()导致EOFError.
我怎么能避免这个?
File "test.py", line 143, in main
raw_input("\nPress ENTER to continue ")
EOFError: EOF when reading a line
Run Code Online (Sandbox Code Playgroud) 我在64位Windows 7机器上用py2exe创建了一个可执行文件,并分发了该程序.
在Windows XP 32位机器上,程序拒绝运行,表现出以下行为:
一个弹出窗口说:program.exe不是一个有效的win32应用程序.
命令提示符窗口显示"访问被拒绝"
我检查了权限,用户具有完全控制权并完全拥有该文件及其父目录.所以这不是问题.
我可以成像的唯一可行的可能性是OS /架构不兼容.我该怎么解决这个问题?
我的setup.py文件用于生成可执行文件:
from distutils.core import setup
import py2exe
setup(console=['xerxes2excel.py'])
Run Code Online (Sandbox Code Playgroud)
我运行以下命令来生成exe:
python setup.py py2exe
Run Code Online (Sandbox Code Playgroud) 我可以通过在扩展sys.path以包含zip文件之后从Python解释器调用"import some_module"从zip文件加载Python模块(.py,.pyc,.pyd)并且仅在我运行之后
import zipextimporter
zipextimporter.install()
Run Code Online (Sandbox Code Playgroud)
后者是.pyd模块所必需的.
我还可以从嵌入在C++中的Python加载Python .py和.pyc模块.但是,为了从嵌入式Python中加载.pyd模块,我添加了
PyRun_SimpleString("import zipextimporter");
Run Code Online (Sandbox Code Playgroud)
C++ exe超出此行而没有错误.但是下一个命令
PyRun_SimpleString("zipextimporter.install()");
Run Code Online (Sandbox Code Playgroud)
给我这个错误:

嵌入Python时为什么zipextimporter.install()会崩溃?
我怎么解决这个问题?
它可能与编译C++代码的方式有关吗?我用g ++:
g++ embed-simple.cpp -IE:\Python27\include -LE:\Python27\libs -lpython27 -o embed-simple
我看到一个链接 如何链接msvcr90.dll与mingw gcc?
这能提供解决方案吗?如果是的话,我应该如何调整它,gcc - > g ++,因为我正在运行C++代码,而不是C.
我在WinXP上运行Python 2.7.2.
在干净安装Python 2.7.2后,我没有得到运行时错误,只是这样:
导入错误:没有名为....的模块
嵌入C++脚本的编译方式是否重要?我用过g ++.我也用英特尔编译器编译,但是给出了相同的运行时错误.也许我应该尝试MS Visual C++.
或者使用ctypes导入pyd?
我试图从python代码创建一个exe.我可以从命令行运行代码,如下所示:
python myScript.py
Run Code Online (Sandbox Code Playgroud)
我从这里安装了py2exe:http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/
并且,有一个如下所示的setup.py:
from distutils.core import setup
import py2exe
setup(console=['myScript.py'])
Run Code Online (Sandbox Code Playgroud)
而且,我像这样运行setup.py:
python setup.py py2exe
Run Code Online (Sandbox Code Playgroud)
我在输出中得到以下内容:
The following modules appear to be missing
['Carbon', 'Carbon.Files', '__pypy__', '_scproxy', 'http_parser.http', 'http_parser.reader', 'jinja2._debugsupport', 'jinja2._markupsafe._speedups',
'jinja2.debugrenderer', 'markupsafe', 'pretty', 'socketpool', 'socketpool.util']
Run Code Online (Sandbox Code Playgroud)
而且,果然,如果我尝试运行exe,我会收到错误:
$ ./myScript.exe
Traceback (most recent call last):
File "restkit\__init__.pyc", line 9, in <module>
File "restkit\conn.pyc", line 14, in <module>
ImportError: No module named socketpool
Traceback (most recent call last):
File "myScript.py", line 12, in <module>
ImportError: cannot import name …Run Code Online (Sandbox Code Playgroud) 我的问题是py2exe我运行时生成一个日志文件.它不会生成,因为我在运行程序时出错.在日志文件中打印出标准控制台!
我该怎么做才能生成没有日志文件?
这里是我的py2exe设置代码:
from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
setup(
options = {'py2exe': {'bundle_files': 1, 'compressed': True}},
windows = [{'script': "run.py"}],
zipfile = None
)
Run Code Online (Sandbox Code Playgroud) 我exe用py2exe模块创建了一个文件.奇怪的是,当我运行exe命令行时它必须工作,但是当我双击exe它时,它会打开一个控制台(就像它必须这样做)并且控制台立即关闭.
我写了一个logging方法来找出问题所在try-except,并且包含了不捕获任何异常的方法.
这是我的一段代码:
if __name__ == '__main__':
try:
mh = moto()
db = database() # you can find __init__ of database() below
log('ok') # I CAN'T FIND THIS LINE IN THE LOG FILE SO THE PROBLEM IS PROBABLY INSIDE __INIT__ OD database()
except Exception as e:
log(str(e))
log(str(traceback.format_exc))
for url in [__CATs__,__hyphens__]:
log(' for url')
Run Code Online (Sandbox Code Playgroud)
init database():
class database():
def __init__(self):
self.conn = sqlite3.connect('db.db') # Database is created …Run Code Online (Sandbox Code Playgroud)