背景:公司另外的一个.net项目需要webserver来比较文本的相识度,我用python写好,为了方便部署,就用py2exe打包。

from distutils.core import setup
import py2exe
setup(windows
=["server_compare.py"] )
代码简单的一塌糊涂,但是遇到另外的一些问题,比如说在这个webserver里需要用到一个文件存放数据,这个文件夹类似于一个数据库的功能,而如果直接指定这个文件夹,打包之后的exe移到另外的地方,一切都不是按照想象的去走了,于是就要下面的一段代码,官网上有的

def main_is_frozen():
"""Return ''True'' if we're running from a frozen program."""
import imp
return (
# new py2exe
hasattr(sys, "frozen") or
# tools/freeze
imp.is_frozen("__main__"))
def get_main_dir():
"""Return the script directory - whether we're frozen or not."""
if main_is_frozen():
return os.path.abspath(os.path.dirname(sys.executable))
return os.path.abspath(os.path.dirname(sys.argv[0]))

get_main_dir就直接可以得到运行exe的目录,这样正好是我想要的。