好了,所以我真的想得到这个权利,因为我生成一些大的py2app/py2exe包时,我一直运行它。所以我有我的软件包,其中包含许多模块/软件包,可能也位于用户站点软件包/默认位置(如果用户具有python分发版),但我希望分发软件包在从我的分发版运行之前在它们之前生效。蟒蛇路径和进口顺序
从我读过 here PYTHONPATH应该是第一件事现在添加到当前目录后,从然而sys.path中,我已经在我的机器上测试的情况并非如此,所有的文件夹中定义在$site-packages$/easy-install.pth
中优先于此。
所以可能有人请给我多一些在这个进口秩序深入的解释//帮我找到一种方法来设置环境变量以这样的方式,我分发包的优先级高于默认安装的。到目前为止,我的尝试,例如在Mac-OS py2app,在我的入口点脚本:
os.environ['PYTHONPATH'] = DATA_PATH + ':'
os.environ['PYTHONPATH'] = os.environ['PYTHONPATH'] + os.path.join(DATA_PATH
, 'lib') + ':'
os.environ['PYTHONPATH'] = os.environ['PYTHONPATH'] + os.path.join(
DATA_PATH, 'lib', 'python2.7', 'site-packages') + ':'
os.environ['PYTHONPATH'] = os.environ['PYTHONPATH'] + os.path.join(
DATA_PATH, 'lib', 'python2.7', 'site-packages.zip')
这基本上是由py2app产生的包的结构。然后我:
SERVER = subprocess.Popen([PYTHON_EXE_PATH, '-m', 'bin.rpserver'
, cfg.RPC_SERVER_IP, cfg.RPC_SERVER_PORT],
shell=False, stdin=IN_FILE, stdout=OUT_FILE,
stderr=ERR_FILE)
这里PYTHON_EXE_PATH是路径由py2app添加到包蟒蛇EXE。现在这可以在没有安装python的机器上正常工作。但是,当python发行版已经存在时,它们的站点包优先。
大概分布py2exe项目时,最简单的方法是分发所有必要的模块,并与它一起的pythonXX.dll,所以它是一个自包含的包不会被任何当前已安装的Python版本会受到影响。另一个有趣的项目可能是virtualenv(http://pypi.python.org/pypi/virtualenv) – cwa 2012-03-06 18:49:16
因此,分发pythonXX.dll应该停止刚才描述的过程? .dll应该在分发文件夹的哪个级别?我问,因为目前我正在将pythonXX.dll添加到软件包中,但问题仍然存在。 – Bogdan 2012-03-07 07:25:52