我已经搜索了一段时间,现在试图找到答案,但由于我缺乏编程经验,我不太了解文档,也没有足够的信心进行实验.
有人能用稍微简单的术语来描述我如何使用像Py2exe,PyInstaller,cx_freeze等程序吗?我只想让其他人(主要是朋友)能够运行我的(简单的,仅文本的)程序而无需自己下载python.如果有一种更简单的方法可以做到这一点,我也很高兴知道这一点.
运行Vista 32bit,python 2.7
有没有办法使用py2exe或其他方法生成DLL文件而不是exe文件?
我想基本上创建一个普通函数的正常win32 dll,但这些函数将用python而不是c ++编码.
虽然有很多这样的问题,请跟我说,因为我认为我的不同......
我有一个5美元的Python应用程序,我使用py2exe,py2app和Linux的源代码分发.该应用程序具有一年的许可证,因此人们需要在一年后升级到更新的版本.我想添加一些简单的许可证保护来强制执行一年的限制.由于应用程序只有5美元,我不在乎它是否容易绕过.只是有一些东西会鼓励许多用户在一年后支付5美元升级而不是忽略许可.
注意:
我的第一个想法是简单地记录安装日期(例如,使用wxConfig)并在一年后使用礼貌消息禁用软件以请升级.
有没有更好的解决方案呢?
我在分发使用pytz的应用程序时遇到问题.我正在使用Py2Exe从我的Python源创建一个可执行文件.
对于我遇到的问题的简单示例,我有:pytz_test.py:
import pytz
tz_au = pytz.timezone("Australia/Sydney")
print tz_au
Run Code Online (Sandbox Code Playgroud)
在setup.py中:
from distutils.core import setup
import py2exe
setup(console=['pytz_test.py'], options={"py2exe" : { 'packages': ['pytz'], } })
Run Code Online (Sandbox Code Playgroud)
然后我运行setup.py:
python setup.py py2exe
Run Code Online (Sandbox Code Playgroud)
编译可执行文件.运行创建的pytz_test.exe我得到:
Traceback (most recent call last):
File "pytz_test.py", line 3, in <module>
tz_au = pytz.timezone("Australia/Sydney")
File "pytz\__init__.pyc", line 185, in timezone
pytz.exceptions.UnknownTimeZoneError: 'Australia/Sydney'
Run Code Online (Sandbox Code Playgroud)
我认为这是因为时区信息没有与可执行文件捆绑在一起,但我不确定如何实现它.
编辑:一个简单的解决方案是将zoneinfo目录从python site-packages目录中的pytz模块添加到library.zip.
为了自动执行此操作,我按照以下项目使用Google Transit数据Feed中的解决方案,来自:http: //code.google.com/p/googletransitdatafeed/source/browse/trunk/python/setup.py
我修改后的setup.py现在看起来像:
from distutils.core import setup …Run Code Online (Sandbox Code Playgroud) 我试图使用py2exe创建一个exe文件.我最近更新了Python从2.7.7到2.7.10以便能够使用requests- proxies.
在更新之前一切正常但现在,最近创建的exe文件,引发了这个错误:
Traceback (most recent call last):
File "puoka_2.py", line 1, in <module>
import mLib
File "mLib.pyc", line 4, in <module>
File "urllib2.pyc", line 94, in <module
File "httplib.pyc", line 71, in <module
File "socket.pyc", line 68, in <module>
ImportError: cannot import name RAND_egd
Run Code Online (Sandbox Code Playgroud)
它可能可以通过更改optionssetup.py文件来修复,但我无法弄清楚我必须在那里写什么.我试过options = {'py2exe': {'packages': ['requests','urllib2']}})但没有成功.
它作为Python脚本运行,但不作为exe.
有谁知道该怎么办?
编辑:
我试图setup.py将此导入文件归档:from _ssl import RAND_egd
它表示无法导入.
EDIT2:Setup.py:
from distutils.core import setup
import py2exe
# from _ssl import RAND_egd …Run Code Online (Sandbox Code Playgroud) 我维护一个跨平台的应用程序,基于在Linux mac和windows上运行的PyQt.
windows和mac版本使用py2exe和py2app分发,它产生相当大的包(~40 MB).
我想添加一个"自动更新"功能,基于补丁来限制下载大小:
我有一些问题:
[更新]
我做了一个简单的类来使用bsdiff制作补丁,这在他们的网站上广告非常有效:我的应用程序的两个py2exe版本上的差异(~75 MB未压缩)产生44 kB补丁!对我来说足够小,我会坚持这种格式.
当我尝试使用py2exe中的一个py2exe示例时,我收到此错误.
File "setup.py", line 22, in ?
import py2exe
ImportError: no module named py2exe
Run Code Online (Sandbox Code Playgroud)
我用安装程序安装了py2exe,并使用python 2.6.我从网站上下载了正确的安装程序(python 2.6 one.)
我的路径设置为C:\ Python26,我可以在命令提示符下运行普通的python脚本.
知道该怎么办?
谢谢.
编辑:我先安装了python 3.1但之后删除了它.这可能是问题吗?
有人能指点我一个py2exe 的好教程吗?我已经阅读了官方教程,但与使用python脚本构建可执行文件时可以使用的所有选项相比,它更加清晰.为了记录,我的python脚本使用Python 2.5.2,wxPython/wxWidgets 2.8和MySQLdb 1.2.2; 所以,如果你有py2exe的具体技巧,那些包将非常感激(是的,我见过Py2EXE和wxPython页面).
我一直在谷歌搜索,但没有一个结果对我有用.
这是我的安装文件
setup(
windows = [
{
"script": "start.py",
"icon_resources": [(1, "myicon.ico")]
}
],
)
Run Code Online (Sandbox Code Playgroud)
实际.exe文件的图标应为"myicon.ico".但是,这不会发生,并且是默认图标."myicon.ico"是32 x 32.
我正在使用Windows 7.
我在我的程序中包含了matplotlib,我搜索了谷歌上的numpy_atlas.dll,我似乎是地球上唯一一个有这个问题的人.
from setuptools import setup
import py2exe
setup(console=['EulerMethod.py'])
Run Code Online (Sandbox Code Playgroud)
C:\(..obmitted..)>python setup.py py2exe
running py2exe
*** searching for required modules ***
*** parsing results ***
......
...obmitted...
......
*** finding dlls needed ***
error: [Errno 2] No such file or directory: 'numpy-atlas.dll'
Run Code Online (Sandbox Code Playgroud) py2exe ×10
python ×10
cx-freeze ×1
deployment ×1
dll ×1
exe ×1
executable ×1
import ×1
licensing ×1
matplotlib ×1
numpy ×1
patch ×1
py2app ×1
pyinstaller ×1
pytz ×1
ssl ×1
windows ×1
wxpython ×1