我有一个包含Linux安装选项的setup.cfg,
[install]
prefix=/opt/foo
install-lib=/opt/foo
,对应于此项目在Linux下的默认目录布局。
现在,同一个项目使用py2exe进行Windows安装。目前,我正在使用.bat文件在运行python setup.py py2exe
时将此setup.cfg移开,以免将py2exe与这些设置混淆,我认为使用默认参数将其设置为distutils / py2exe。 / p>
我宁愿调用python setup.py py2exe
一些额外的参数来覆盖setup.cfg中指定的参数,但是使用--prefix= --install-lib=
给了我
[...]
*** copy data files ***
Traceback (most recent call last):
File "setup.py", line 158, in <module>
**platformOptions)
File "C:\Python27\lib\distutils\core.py", line 152, in setup
dist.run_commands()
File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 243, in run
self._run()
File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 312, in _run
self.create_binaries(py_files, extensions, dlls)
File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 560, in create_binaries
install_data.ensure_finalized()
File "C:\Python27\lib\distutils\cmd.py", line 109, in ensure_finalized
self.finalize_options()
File "C:\Python27\lib\distutils\command\install_data.py", line 41, in finalize_options
('force', 'force'),
File "C:\Python27\lib\distutils\cmd.py", line 298, in set_undefined_options
src_cmd_obj.ensure_finalized()
File "C:\Python27\lib\distutils\cmd.py", line 109, in ensure_finalized
self.finalize_options()
File "C:\Python27\lib\distutils\command\install.py", line 353, in finalize_options
'userbase', 'usersite')
File "C:\Python27\lib\distutils\command\install.py", line 504, in convert_paths
setattr(self, attr, convert_path(getattr(self, attr)))
File "C:\Python27\lib\distutils\util.py", line 199, in convert_path
raise ValueError, "path '%s' cannot be absolute" % pathname
ValueError: path '/opt/trelby' cannot be absolute
这与不尝试覆盖setup.cfg参数时的行为相同,因此似乎出现了问题。
我还愿意在setup.py中设置distutils.core.setup()
的{{1}}参数,如果有必要,但主要问题似乎是:为什么值,为了实现默认的py2exe行为?
答案 0 :(得分:2)
我试图复制你的错误,虽然没有访问win *,可能还有更新的distutils。
ValueError: path '/opt/trelby' cannot be absolute
这很重要,如果您因任何原因必须使用相对路径,请确保使用相对路径。
我没有使用普通的distutils来解决这个错误。
如果在config.cfg中指定了install-lib, python setup.py install --prefix /some/other
对我没有任何作用
python setup.py install --install-lib /some/other
确实会更改安装路径。
换句话说,我的设置中的优先级是:
请在没有py2exe的情况下进行测试。如果你的问题源于distutils,也许你可以升级它们。或者它可能是吞并命令行参数的py2exe,并且不会将它们传递给distutils,也许你可以追踪它并提交补丁。