在编译python程序以使用我的图标时,我不知道输入setup.py文件的命令.谁能帮我?提前致谢.
我有一个Python应用程序.它通过执行以下操作来加载配置文件(以及各种其他文件):
_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
CONFIG_DIR = os.path.join(_path, 'conf')
Run Code Online (Sandbox Code Playgroud)
这很好用.但是,当我用py2exe打包应用程序时,会发生不好的事情:
File "proj\config.pyc", line 8, in <module>
WindowsError: [Error 3] The system cannot find the path specified: 'C:\\proj\
\dist\\library.zip\\conf'
Run Code Online (Sandbox Code Playgroud)
显然这是一条无效的道路......这样做的更有效的方法是什么?我不想在程序中指定绝对路径,因为它可以放在不同的文件夹中.我应该只说"如果它说文件夹名称是'library.zip',那么再向下一级到'dist'文件夹"?
请注意,我有非常嵌套的目录层次结构...例如,我有一个模块gui.utils.images,存储在"gui/utils/images.py"中,它使用其路径访问"gui/images/ok. png",例如.现在py2exe版本会尝试访问"proj/dist/library.zip/gui/images/ok.png",或其他东西,这是行不通的.
我有一个最小的python win32服务service.py,没有什么特别的:
import win32serviceutil
import win32service
import win32event
class SmallestPythonService(win32serviceutil.ServiceFramework):
_svc_name_ = "SmallestPythonService"
_svc_display_name_ = "display service"
# _svc_description_='ddd'
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
def SvcDoRun(self):
win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE)
if __name__=='__main__':
win32serviceutil.HandleCommandLine(SmallestPythonService)
Run Code Online (Sandbox Code Playgroud)
当我跑:
service.py install
service.py start
Run Code Online (Sandbox Code Playgroud)
它工作正常,但当我service.py用py2exeto 编译文件service.exe并运行以下:
service.exe install
service.exe start [or trying to restart the service from the Services.msc]
Run Code Online (Sandbox Code Playgroud)
我收到这条消息:
Could not start the service name service on Local Computer. …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个pygame可执行文件.我将使用以下安装文件:
from distutils.core import setup
import py2exe
setup(
console = [ "game.py" ],
author = "me",
data_files = [ ( directory, [ file_1, file_2... ] ) ]
)
Run Code Online (Sandbox Code Playgroud)
我已经让它在一个简单的游戏上工作得很好,但我想打包的游戏有> 700个图像文件.我的问题是,是否有一种简单的方法从目录中读取所有文件名,所以我不必单独列出每个文件名?
虽然有些文件按顺序编号,但大多数都有不同的根名称,因此编写一个生成相应字符串的循环不是一个选项.
谢谢
所以我试着寻找这个答案,然后直接来询问.将IronPython应用程序/脚本集转换为EXE似乎是可行的.一个问题是,他们似乎都在谈论将IronPython与IronPython Studios(Visual Studio的Python插件)一起使用.最后我查了一下,我认为IronPython Studios基本上被用于Visual Studios(或PTVS)插件工具的Python工具所取代.这个问题是由于我的代码的结构方式,它实际上设法在将我的代码加载到IDE时使插件崩溃,从而使Visual Studios崩溃.它会这样做,直到下个月定期更新在月底或下个月初发布.所以这不是一个选项,因为我不得不在Eclipse中使用PyDev插件开发我的项目.
我之前使用py2exe将一些基本的Python应用程序转换为可执行文件,但那时我正在使用CPython解释器.我不知道如何设置py2exe来使用IronPython.是否可以使用py2exe来生成IronPython可执行文件?如果我的程序使用额外的C#程序集来完成它的工作,我怎么设置它们以便py2exe可以使用它们,我的可执行文件可以看到它们用于引用?
这类似于在Python中放置配置文件的位置?,但我要问的是在Windows系统上用py2exe或类似程序编译/冻结的脚本.(即,这一个:用于任意字节的用户友好字符串的配置文件格式是什么? https://gist.github.com/1119561)
我的第一个想法是将配置文件放在与.exe相同的文件夹中,这使它有点自包含.但是,如果我将文件与.exe关联,它将从他们的目录调用,而不是它自己的,所以我需要像我如何在Python中获取当前执行文件的路径?找到配置文件.
这是最好的方法吗?或者是否有一些标准配置文件位置可供搜索,例如/sf/answers/529756251/?
嗨当我使用py2exe编译我的python脚本时,除了出现无用的命令行对话框以及我的GUI之外,一切都运行良好.有任何解决这个问题的方法吗?我有python 2.7,我的安装脚本如下所示:
from distutils.core import setup
import py2exe
setup(console=['Main.py'])
Run Code Online (Sandbox Code Playgroud)
请帮忙!
我制作了一个slideshow.py文件,用Tkinter小部件显示一些照片修正,它在我的windows和linux上完美运行.为了让它在没有安装python和tcl的Windows上运行,我使用py2exe将其编译成win32可执行文件,setup.py很简单:
from distutils.core import setup
import py2exe
setup(windows=["slideshow.py"])
Run Code Online (Sandbox Code Playgroud)
然后我运行"python setup.py py2exe",它在c:\ Users\d2xia\ccm_wa\utils\tfps \和"tcl","library.zip","slideshow.exe"中生成一个"dist"文件夹,等等.
当我运行slideshow.exe时出错:
Traceback (most recent call last):
File "slideshow.py", line 45, in <module>
File "Tkinter.pyc", line 1685, in __init__
_tkinter.TclError: Can't find a usable init.tcl in the following directories:
C:/Users/d2xia/ccm_wa/utils/tfps/lib/tcl8.5 C:/Users/d2xia/ccm_wa/utils/tfps/lib/tcl8.5 C:/Users/d2xia/ccm_wa/utils/lib/tcl8.5 C:/Users/d2xia/ccm_wa/utils/tfps/library C:/Users/d2xia/ccm_wa/utils/library C:/Users/d2xia/ccm_wa/utils/tcl8.5.11/library C:/Users/d2xia/ccm_wa/tcl8.5.11/library
Run Code Online (Sandbox Code Playgroud)
tcl8.5和tk8.5实际上位于"tcl"文件夹下,但似乎py2exe生成的exe仍然看起来在"lib"或"library"下,似乎它没有设置正确的TCL_LIBRARY和TK_LIBRARY.
即使我将"tcl"重命名为"lib",它仍会得到相同的错误.
set TCL_LIBRARY=c:\Users\d2xia\ccm_wa\utils\tfps\dist\tcl\tcl8.5\
set TK_LIBRARY=c:\Users\d2xia\ccm_wa\utils\tfps\dist\tcl\tk8.5\
Run Code Online (Sandbox Code Playgroud)
然后slideshow.exe生成一些新错误:
c:/Users/d2xia/ccm_wa/utils/tfps/dist/tcl/tcl8.5/init.tcl: version conflict for package "Tcl": have 8.5.11, need exactly 8.5.2
version conflict for package "Tcl": have 8.5.11, need exactly 8.5.2
while executing
"package require …Run Code Online (Sandbox Code Playgroud) 我使用pyqt在python中构建了一个gui,它导入了VTK.我没有运气得到py2exe,pyinstaller cx_freeze等与它一起工作......我得到一个错误说下面的内容使用pyinstaller:
vtk.__helper.LinkError: No module named vtkFilteringPythonSIP
Run Code Online (Sandbox Code Playgroud)
我已经设法使用pyinstaller制作不包含vtk代码的工作可执行文件,所以我现在倾向于此,但是如果有人可以帮我编写代码来实现这个目的:http://www.vtk.org/ Wiki/VTK/Examples/Python/Widgets/EmbedPyQt代码作为可执行文件工作然后我将永远感激,但它已经完成.我已经尝试将它抱怨的文件添加到pyinstaller钩子但仍然没有运气.是否有旧的/开发版本已修复此错误?虽然我找到了同一条船上的人,但在信息高速公路上找不到任何解决方案.我正在使用最新版本的Python(X,Y).
我有一个依赖于openpyxl的python应用程序,并且在通过python解释器运行时效果很好.但是,在使用py2exe创建exe时.exe是生成的,但当我点击它时,我收到一个错误,并生成以下日志:
Traceback (most recent call last):
File "excelTest.py", line 1, in <module>
File "openpyxl\__init__.pyc", line 30, in <module>
File "openpyxl\workbook\__init__.pyc", line 5, in <module>
File "openpyxl\workbook\workbook.pyc", line 16, in <module>
File "openpyxl\writer\write_only.pyc", line 23, in <module>
File "openpyxl\writer\excel.pyc", line 36, in <module>
File "openpyxl\packaging\extended.pyc", line 4, in <module>
ImportError: cannot import name __version__
Run Code Online (Sandbox Code Playgroud)
任何人都可以让我知道问题是什么以及如何解决它.这是我的setup.py:
from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
setup(windows=['excelTest.py'], options={"py2exe": {"includes": ["openpyxl","os","ntpath","Tkinter","tkFileDialog","sys"]}})
Run Code Online (Sandbox Code Playgroud)